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