Docker应用程序中的数据库

时间:2016-12-30 14:50:45

标签: mysql docker

我有一个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"

1 个答案:

答案 0 :(得分:0)

使用具有已定义主机路径的命名卷(或更具体地说是使用Docker Engine卷API创建的卷)与您使用的方法相比没有太大优势。从技术上讲,创建一个新容器“更容易”,但这只是因为你不再需要记住路径。您还可以使用卷API独立于应用程序容器“管理”卷,但使用docker容器API也同样容易。

如果您坚持要创建具有绝对主机路径的命名卷,则需要使用卷驱动程序。我建议本地坚持。安装起来非常简单并且运行良好。

https://github.com/CWSpear/local-persist