我发现了下面的码头组成:
version: '2'
services:
db:
image: mariadb:10.1
restart: always
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_USER: user
MYSQL_PASSWORD: password
MYSQL_DATABASE: database
cron:
image: schnitzler/mysqldump
restart: always
volumes:
- ./bin/crontab:/var/spool/cron/crontabs/root
- ./bin/backup:/usr/local/bin/backup
volumes_from:
- backup
command: ["-l", "8", "-d", "8"]
environment:
MYSQL_HOST: db
MYSQL_USER: user
MYSQL_PASSWORD: password
MYSQL_DATABASE: database
backup:
image: busybox
volumes:
- ./backup:/backup使用单独的备份容器和卷(从卷到./backup目录直接进入cron容器)有什么好处?
发布于 2021-06-09 10:30:51
在现代码头上,我从不使用这种模式,尤其是我会避免使用volumes_from:。
volumes_from:有两个问题,一是不清楚它到底在安装什么,二是没有对安装位置的任何控制。例如,如果您的backup的映像在其Dockerfile中有一个VOLUME声明,那么该卷将以与backup容器完全相同的路径挂载到cron容器中,即使它在任何地方都没有在docker-compose.yml中列出。这可能会带来令人惊讶的结果。
码头工人并不总是有名字的卷。在命名卷之前,获得持久共享存储的方法是创建一个创建匿名卷的数据卷容器,然后使用docker run --volumes-from ...运行其他容器来附加该存储。既然已经有了命名卷,就没有必要再这样做了。
https://stackoverflow.com/questions/67898889
复制相似问题