V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
kyonn
V2EX  ›  Docker

docker compose 如何自动创建指定权限的 bind mount?

  •  
  •   kyonn · 4 天前 · 359 次点击

    下面格式的 docker-compose.yml 会在 docker-compose up -d 时自动在当前目录下创建 kkk 目录, 挂载到 container 内部作为 /app/data 使用. 有个问题是部分 docker image 对挂载的 volume 权限有要求, 比如设置 owner 为 www-data, 当然可以手动创建该目录, 并修改权限后执行 docker-compose up -d.

    有没有一种办法能在 docker-compose up -d 执行时自动在主机上创建 kkk 文件夹并修改 kkk 目录权限? Dockerfile 好像是针对容器内部进行的操作?

    包括有些 docker 使用时, 要求先在主机上手动创建数据库空文件, 这些有没有办法都写到 一种 标准的配置文件中. 因为不想直接去修改原始的 docker 镜像.

      xxxx:
        image: yyyy/zzzz:v7.2.2
        container_name: xxxx
        restart: always
        volumes:
          - ./kkk:/app/data
    
    4 条回复    2024-12-31 21:22:51 +08:00
    BernieDu
        1
    BernieDu  
       4 天前
    有点没听懂,你是觉得 Bind 对宿主机路径依赖性很强吗。如果是这样可以改为用 volume
    xxxx:
    image: yyyy/zzzz:v7.2.2
    container_name: xxxx
    restart: always
    volumes:
    - source: xxxx_data
    target: /app/data
    type: volume
    volumes:
    xxxx_data: {}
    kyonn
        2
    kyonn  
    OP
       4 天前
    @BernieDu
    不是, 就是要用 bind , 这样方便备份. 问题是 bind mount 的 host 目录, 由 docker 直接创建的默认权限是 root:root 的, 而有些 docker 不是以 root:root 运行的, 不能直接工作, 需要在 docker-compose up -d 前手动创建这个 host 目录, 并且修改这个目录权限.

    问题是能不能把这个目录创建和自动设置主机 kkk 目录权限的事情放在 docker-compose.yml 或者 Dockerfile 之类的标准流程里一起做了. 这样迁移比较方便, 不容易忘了要改权限的事情.
    Spoken6035
        3
    Spoken6035  
       4 天前
    建议写一个 bash 脚本
    kyonn
        4
    kyonn  
    OP
       4 天前
    @Spoken6035 也是个办法.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   981 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 21:59 · PVG 05:59 · LAX 13:59 · JFK 16:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.