什么是docker-compose.yml文件?

时间:2017-06-09 05:56:40

标签: docker docker-compose

我无法找到什么是docker-compose文件的真实定义?

这样说是对的吗? :

  

docker-compose文件是一个YAML文件,允许我们同时部署多个docker容器。

我想更好地解释什么是docker-compose文件

2 个答案:

答案 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为:

  • 从路径./nginx
  • 构建nginx
  • 链接angular和django容器(因此它们在docker网络中的IP通过名称解析)
  • 将端口80,443,8000绑定到主机
  • 将其添加到网络my_net(因此所有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文件,在该文件中以人类可读的格式编写所有这些说明。(同样可以用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。它快速,可重复且不难理解。