我找不到一个真实的定义什么是docker-compose文件。这样说对不对:一个docker-compose文件是一个YAML文件,它允许我们同时部署多个Docker容器。我希望能够更好地解释什么是docker-compose文件。
nxowjjhe1#
docker-compose.yml是Docker Compose的配置文件。它允许同时部署、合并和配置多个Docker容器。Docker的“规则”是将每个单独的流程外包给自己的Docker容器。以一个简单的web应用程序为例:你需要一个服务器,一个数据库和一个PHP。所以你可以用Apache 2,PHP和MySQL设置三个docker容器。Docker Compose的优点是配置简单。你不需要在Bash中写一大堆命令。你可以在docker-compose.yml中编译它:
db: image: mysql ports: - "3306:3306" environment: MYSQL_DATABASE: example_db MYSQL_USER: root MYSQL_PASSWORD: rootpw php: image: php ports: - "80:80" - "443:443" volumes: - ./SRC:/var/www/ links: - db
字符串正如你在我的例子中所看到的,我定义了端口转发、外部数据卷和到其他Docker容器的链接。它快速、可复制,而且不难理解。Docker Compose文件格式的形式是specified,这使得docker-compose.yml文件可以使用Docker以外的东西执行,例如Podman。
tzdcorbm2#
Docker Compose是一种允许您同时部署和管理多个容器的工具。一个docker-compose.yml文件包含了如何执行此操作的说明。例如,在此文件中,您可以指示Docker Compose执行以下操作:
docker-compose.yml
Dockerfile
在构建和运行单个Docker容器时,使用它 * 而不是所有可选参数 *。范例:
version: '2' services: nginx: build: ./nginx links: - django:django - angular:angular ports: - "80:80" - "8000:8000" - "443:443" networks: - my_net django: build: ./django expose: - "8000" networks: - my_net angular: build: ./angular2 links: - django:django expose: - "80" networks: - my_net networks: my_net: external: name: my_net
字符串此示例指示Docker Compose执行以下操作:
nginx
angular
django
80
443
8000
my_net
(so所有3个容器都在同一网络中,因此可以彼此访问)然后,对django和angular容器执行类似的操作。如果您只使用Docker命令,它将类似于:
docker build --name nginx . docker run --link django:django angular:angular --expose 80 443 8000 --net my_net nginx
型因此,虽然您可能不想为每个映像/容器键入所有这些选项和命令,但您可以编写一个docker-compose.yml文件,在该文件中以可读格式编写所有这些指令。
lnlaulya3#
如果你的项目在运行状态下需要不同的服务,你必须从Docker中单独拉取所有这些服务的镜像,并在每次运行项目时在它们的容器中启动它们。(Docker Compose)已创建。Docker Compose是一个YAML文件,用于配置应用程序的服务,然后创建并启动所有这些配置,使用命令(docker compose up)。Docker Compose包含在Windows和macOS的Docker Desktop中,对于Linux,您可以从here下载其二进制文件。一个有postgres DB的项目的docker-compose.yml示例:
version: '3' services: db: image: postgres environment: POSTGRES_DB: DB_name POSTGRES_USER: DB_user POSTGRES_PASSWORD: DB_password volumes: - db-data:/var/lib/postgresql/data
字符串
3条答案
按热度按时间nxowjjhe1#
docker-compose.yml是Docker Compose的配置文件。
它允许同时部署、合并和配置多个Docker容器。Docker的“规则”是将每个单独的流程外包给自己的Docker容器。
以一个简单的web应用程序为例:你需要一个服务器,一个数据库和一个PHP。所以你可以用Apache 2,PHP和MySQL设置三个docker容器。
Docker Compose的优点是配置简单。你不需要在Bash中写一大堆命令。你可以在docker-compose.yml中编译它:
字符串
正如你在我的例子中所看到的,我定义了端口转发、外部数据卷和到其他Docker容器的链接。它快速、可复制,而且不难理解。
Docker Compose文件格式的形式是specified,这使得docker-compose.yml文件可以使用Docker以外的东西执行,例如Podman。
tzdcorbm2#
Docker Compose是一种允许您同时部署和管理多个容器的工具。
一个
docker-compose.yml
文件包含了如何执行此操作的说明。例如,在此文件中,您可以指示Docker Compose执行以下操作:
Dockerfile
以构建特定映像Docker合成读取该文件并执行命令。
在构建和运行单个Docker容器时,使用它 * 而不是所有可选参数 *。
范例:
字符串
此示例指示Docker Compose执行以下操作:
nginx
angular
和django
容器(因此其在Docker网络中的IP按名称解析)80
、443
、8000
绑定到主机my_net
(so所有3个容器都在同一网络中,因此可以彼此访问)
然后,对
django
和angular
容器执行类似的操作。如果您只使用Docker命令,它将类似于:
型
因此,虽然您可能不想为每个映像/容器键入所有这些选项和命令,但您可以编写一个
docker-compose.yml
文件,在该文件中以可读格式编写所有这些指令。lnlaulya3#
如果你的项目在运行状态下需要不同的服务,你必须从Docker中单独拉取所有这些服务的镜像,并在每次运行项目时在它们的容器中启动它们。(Docker Compose)已创建。Docker Compose是一个YAML文件,用于配置应用程序的服务,然后创建并启动所有这些配置,使用命令(docker compose up)。
Docker Compose包含在Windows和macOS的Docker Desktop中,对于Linux,您可以从here下载其二进制文件。
一个有postgres DB的项目的docker-compose.yml示例:
字符串