如何正确设置数据卷容器?

时间:2016-09-21 15:33:36

标签: php nginx docker docker-compose

我想设置一个数据卷容器与另一个LAMP容器一起工作,但我开始使用Docker,所以我有一些疑虑。

所以我将运行两个容器,让它命名为(仅作为示例):

  • 灯容器
  • 数据容器

我知道一次运行多个容器的唯一方法是使用Docker Compose,但我不知道如何设置compose.yml文件。

我们说lamp-container有以下存储数据的目录:

/data/www # meant to contain web content
/data/www/default # root directory for the default vhost
/data/logs/ # Nginx, PHP logs
/data/tmp/php/ # PHP temp directories

我想将它们分别映射到/home/<username>/container_files下主机上的本地目录(这是运行docker的主机上的本地目录)。例如:

/data/www => /home/<username>/container_files/data/www
/data/www/default => /home/<username>/container_files/data/www/default
/data/logs/ => /home/<username>/container_files/data/logs
/data/tmp/php/ => /home/<username>/container_files/data/php

是否可以使用compose.yml示例文件向我指出正确的方向?我读过docs但是我很困惑,因为我经常使用VM,并且在很多方面与容器不同。

注意:我应该补充一点,这是针对一个主机中的一个用户而不是一个主机中的多个用户。因此,每个想要使用此设置的人都应该拥有自己的设置。

1 个答案:

答案 0 :(得分:2)

随着命名卷的引入,数据容器卷已被弃用。命名卷具有数据容器的所有相同优点,但是单独管理,让您可以更轻松地将卷管理为数据而不是伪容器。

这是一个docker-compose.yml的示例,用于挂载两个命名卷和另一个网络,您可能会删除大多数不适用于您自己场景的行:

version: '2'

volumes:
  vol-name-1:
    driver: local
  vol-name-2:
    driver: local

networks:
  internal1:
    driver: bridge

services:
  service-1:
    build: .
    image: my-service:latest
    volumes:
      - ./auth:/my-app/auth:ro
      - ./host-conf:/my-app/conf
      - vol-name-1:/my-app/data-1
      - vol-name-2:/my-app/data-2
    networks:
      - default
      - internal1
    ports:
      - "8080:80"
    entrypoint: "my-start.sh"

在上面的示例中,它还安装了两个主机卷(绑定装入),并显示了如何在auth卷上装载:ro的只读卷。