我想设置一个数据卷容器与另一个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,并且在很多方面与容器不同。
注意:我应该补充一点,这是针对一个主机中的一个用户而不是一个主机中的多个用户。因此,每个想要使用此设置的人都应该拥有自己的设置。
答案 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
的只读卷。