docker-compose v2在主机

时间:2016-04-19 15:21:30

标签: docker docker-compose

我正在寻找有关如何制作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:密钥无法“在主机上的特定路径上存储数据”是否正确?
  • 使用命名卷(使用顶级“卷”键)有哪些优点和不便之处?我是否更喜欢在主机挂载上使用命名卷?工作流程比较会很好。

1 个答案:

答案 0 :(得分:1)

  

在容器和容器数据之间使用不同的图像是否有问题

完全没有,这是正常的。

  

说没有办法将“数据存储在主机上的特定路径上”与顶级卷:key?

是否正确?

正确。顶级卷密钥用于命名卷,但您无法命名主机卷。

  

使用命名卷(使用顶级“卷”键)有哪些优点和不便之处?我是否更喜欢在主机挂载上使用命名卷?工作流程比较会很好。

命名卷允许您使用卷驱动程序,因此您可以将数据存储在本地文件系统以外的其他位置。但是,需要使用数据初始化命名卷,因此您可能必须添加脚本或其他内容。