我无法找到什么是docker-compose文件的真实定义?
这样说是对的吗? :
docker-compose文件是一个YAML文件,允许我们同时部署多个docker容器。
我想更好地解释什么是docker-compose文件
答案 0 :(得分:4)
Docker compose是一个允许您同时部署多个容器的工具。文件docke-compose.yml是带有说明的文件 - 如何做到这一点。在此文件中,您指示docker-compose将Dockerfile用于构建特定映像的位置,要公开的端口,如何链接容器,要绑定到主机等的端口等等.Docker-compose读取该文件并执行命令。在构建和运行单个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为:
然后对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文件,在该文件中以人类可读的格式编写所有这些说明。(同样可以用Ansible)
实现答案 1 :(得分:1)
docker-compose.yml是docker-compose的配置文件。
它允许同时部署,组合和配置多个docker-container。 Docker“规则”是将每个进程外包给自己的docker-container。
例如一个简单的web docker-compose。你需要一个服务器,一个数据库和PHP。所以你可以用apache2,php和mysql设置三个docker-container。
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-container。它快速,可重复且不难理解。