这个问题似乎在表面“卷”上有一个简单的答案,但我相信这可能会更复杂一点。
说明
我们有三个服务,每个服务都可以有多个容器在单个或多个主机上运行。
容器A是我们的API容器
容器B是我们的队列容器
容器C是我们的任务计划(cron)容器
所有这些容器运行相同的git-repo /源代码(PHP)。 唯一的区别是在容器中运行的进程:
容器A正在运行php-fpm
容器B正在运行一个队列监视守护进程(artisan队列)
容器C正在运行执行任何cron任务的crontab
目前在每个“服务”的dockerfile中,我们下载了git repo并启动相关的进程。 虽然最好有一个“数据”容器,以某种方式将代码提供给所有上述提及的容器。
我们如何创build一个充当其他容器“代码库”的容器? 将源文件从其文件系统安装到其他“服务”容器的文件系统中?
执行此操作的首选方法是使用命名卷:
version: '2' volumes: data: driver: local services: service-1: build: . image: my-service:latest volumes: - data:/data service-2: image: my-service:latest volumes: - data:/data
要使用数据容器,您需要在该容器上具有卷,然后将这些卷装入其他容器中:
version: '2' services: data: build: . image: my-service:latest command: /bin/true volumes: - /data service-1: image: my-service:latest volumes-from: - data service-2: image: my-service:latest volumes-from: - data