我正在寻找有关如何制作docker-compose.yml版本2的最简洁方法的指导:
该应用程序是一个经典的Web应用程序,带有一个mysql&用于后端的redis数据库,以及位于直接提供静态资产的代理后面的Web服务器。有意省略了depends_on
,环境变量和网络等细节。
以下是我目前使用的内容:
version: "2"
services:
proxy:
build:
context: ./apps/nginx
ports:
- "80:80"
- "443:443"
volumes:
- /etc/localtime:/etc/localtime:ro
- ./data/web/assets:/var/www/assets:ro
- ./data/web/puma:/var/run/puma
web:
build:
context: ./apps/rails
volumes:
- /etc/localtime:/etc/localtime:ro
- ./data/web/assets:/srv/app/public/assets
- ./data/web/puma:/var/run/puma
db:
image: mysql:5.7
volumes:
- /etc/localtime:/etc/localtime:ro
- ./data/mysql:/var/lib/mysql
redis:
image: redis
volumes:
- /etc/localtime:/etc/localtime:ro
- ./data/redis:/data
以下是我计划用于下一个版本的内容:
version: "2"
services:
proxy:
build:
context: ./apps/nginx
ports:
- "80:80"
- "443:443"
volumes_from:
- localtime
- web-assets-data:ro
- web-puma-data
web:
build:
context: ./apps/rails
volumes_from:
- localtime
- web-assets-data
- web-puma-data
db:
image: mysql:5.7
volumes_from:
- localtime
- db-data
redis:
image: redis
volumes_from:
- localtime
- redis-data
web-assets-data:
image: ubuntu:14.04
volumes:
- ./data/web/assets:/srv/app/public/assets
web-puma-data:
image: ubuntu:14.04
volumes:
- ./data/web/puma:/var/run/puma
db-data:
image: ubuntu:14.04
volumes:
- ./data/mysql:/var/lib/mysql
redis-data:
image: ubuntu:14.04
volumes:
- ./data/redis:/data
localtime:
image: ubuntu:14.04
volumes:
- /etc/localtime:/etc/localtime:ro
我认为新版本的好处是:
所以,我的问题是:
db-data
应该使用mysql:5.7
而不是ubuntu:14.04
?volumes:
密钥无法“在主机上的特定路径上存储数据”是否正确?答案 0 :(得分:1)
在容器和容器数据之间使用不同的图像是否有问题
完全没有,这是正常的。
说没有办法将“数据存储在主机上的特定路径上”与顶级卷:key?
是否正确?
正确。顶级卷密钥用于命名卷,但您无法命名主机卷。
使用命名卷(使用顶级“卷”键)有哪些优点和不便之处?我是否更喜欢在主机挂载上使用命名卷?工作流程比较会很好。
命名卷允许您使用卷驱动程序,因此您可以将数据存储在本地文件系统以外的其他位置。但是,需要使用数据初始化命名卷,因此您可能必须添加脚本或其他内容。