下面格式的 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
|      1BernieDu      304 天前 有点没听懂,你是觉得 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: {} | 
|      2kyonn OP @BernieDu  不是, 就是要用 bind , 这样方便备份. 问题是 bind mount 的 host 目录, 由 docker 直接创建的默认权限是 root:root 的, 而有些 docker 不是以 root:root 运行的, 不能直接工作, 需要在 docker-compose up -d 前手动创建这个 host 目录, 并且修改这个目录权限. 问题是能不能把这个目录创建和自动设置主机 kkk 目录权限的事情放在 docker-compose.yml 或者 Dockerfile 之类的标准流程里一起做了. 这样迁移比较方便, 不容易忘了要改权限的事情. | 
|      3Spoken6035      304 天前 建议写一个 bash 脚本 | 
|      4kyonn OP @Spoken6035 也是个办法. |