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

Php 如何正确设置数据卷容器?,php,nginx,docker,docker-compose,Php,Nginx,Docker,Docker Compose,我想设置一个数据卷容器与另一个LAMP容器一起工作,但我正开始与Docker一起工作,所以我有一些疑问 因此,我将运行两个容器,我们将其命名为(作为一个示例): 灯箱 数据容器 我知道一次运行多个容器的唯一方法是使用Docker Compose,但我不知道如何设置Compose.yml文件 比如说,灯容器有以下存储数据的目录: /data/www # meant to contain web content /data/www/default # root directory for the

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

因此,我将运行两个容器,我们将其命名为(作为一个示例):

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

比如说,
灯容器
有以下存储数据的目录:

/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//container\u 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
/data/www=>/home//container\u files/data/www
/data/www/default=>/home//container\u files/data/www/default
/data/logs/=>/home//container\u文件/data/logs
/data/tmp/php/=>/home//container\u files/data/php
有人能用
compose.yml
示例文件给我指出正确的方向吗?我已经读过了,但让我感到困惑,因为我通常使用虚拟机,并且在很多方面与容器不同


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

数据容器卷因引入命名卷而被弃用。命名卷具有与数据容器相同的优点,但可以单独管理,使您可以更轻松地将卷作为数据而不是伪容器进行管理

下面是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"

在上面的示例中,它还挂载了两个主机卷(绑定挂载),并显示了如何在身份验证卷上挂载带有
:ro
的只读卷。

由于引入了命名卷,数据容器卷已被弃用。命名卷具有与数据容器相同的优点,但可以单独管理,使您可以更轻松地将卷作为数据而不是伪容器进行管理

下面是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"

在上面的示例中,它还挂载了两个主机卷(绑定挂载),并显示了如何在身份验证卷上挂载带有
:ro
的只读卷。

您不能基于此在各自的目录和链接中为每个用户创建
compose.yml
注意,我没有这样做,只是问了一下。@Pogrindis对不起,我没有跟踪你,所以每个容器将作为不同的用户运行,将
compose.yml
路由更改为
/home/$user/compose.yml
并简单地使用yaml中的相对目录结构,如
/data/logs/
等?只是一个想法@Pogrindis仍然不确定您的解决方案,将只是一个用户,而这将是我的,至少在我的电脑上。我正在尝试构建此解决方案,以便其他人也可以使用相同的解决方案,但不要认为每台电脑有多个用户,请逐个PCAH思考抱歉,我误解了这个问题!那么这有关系吗您不能在各自的目录和链接中为每个用户创建一个
compose.yml
,基于此吗?::注意,我没有这样做,只是问了一下。@Pogrindis对不起,我没有跟踪你,所以每个容器将作为不同的用户运行,将
compose.yml
路由更改为
/home/$user/compose.yml
并简单地使用yaml中的相对目录结构,如
/data/logs/
等?只是一个想法@Pogrindis仍然不确定您的解决方案,将只是一个用户,而这将是我的,至少在我的电脑上。我正在尝试构建此解决方案,以便其他人也可以使用相同的解决方案,但不要认为每台电脑有多个用户,请逐个PCAH思考抱歉,我误解了这个问题!那么这有关系吗