我有一个Docker Web应用程序及其我已设置的数据库:
-v /home/stephane/dev/php/learnintouch/docker/mysql/data:/usr/bin/mysql/install/data
它工作正常,但我想知道这是否是推荐的方式。
因为我看到我们也可以通过在主机上给出名称而不是绝对路径来创建命名卷:
-v learnintouch-data:/usr/bin/mysql/install/data
但是,如何将卷名称learnintouch-data与/home/stephane/dev/php/learnintouch/docker/mysql/data
处的主机位置相关联?
这是我当前的docker-compose.yml
文件:
learnintouch.com-startup:
image: stephaneeybert/learnintouch.com-startup
container_name: learnintouch.com-startup
ports:
- "80:80"
links:
- mysql
- redis
- nodejs-learnintouch
nodejs-learnintouch:
image: stephaneeybert/nodejs-learnintouch
container_name: nodejs-learnintouch
ports:
- "9001:9001"
links:
- redis
mysql:
image: stephaneeybert/mysql:5.6.30
container_name: mysql
ports:
- "3306:3306"
environment:
- MYSQL_ROOT_PASSWORD=root
volumes:
- "/home/stephane/dev/php/learnintouch/docker/mysql/data:/usr/bin/mysql/install/data"
redis:
image: stephaneeybert/redis:3.0.7
container_name: redis
ports:
- "6379:6379"
答案 0 :(得分:0)
使用具有已定义主机路径的命名卷(或更具体地说是使用Docker Engine卷API创建的卷)与您使用的方法相比没有太大优势。从技术上讲,创建一个新容器“更容易”,但这只是因为你不再需要记住路径。您还可以使用卷API独立于应用程序容器“管理”卷,但使用docker容器API也同样容易。
如果您坚持要创建具有绝对主机路径的命名卷,则需要使用卷驱动程序。我建议本地坚持。安装起来非常简单并且运行良好。