什么是docker-compose.yml文件?

0lvr5msh  于 12个月前  发布在  Docker
关注(0)|答案(3)|浏览(132)

我找不到一个真实的定义什么是docker-compose文件。
这样说对不对:
一个docker-compose文件是一个YAML文件,它允许我们同时部署多个Docker容器。
我希望能够更好地解释什么是docker-compose文件。

nxowjjhe

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

tzdcorbm

tzdcorbm2#

Docker Compose是一种允许您同时部署和管理多个容器的工具。
一个docker-compose.yml文件包含了如何执行此操作的说明。
例如,在此文件中,您可以指示Docker Compose执行以下操作:

  • 从何处获取Dockerfile以构建特定映像
  • 您要公开的端口
  • 如何链接容器
  • 您要将哪些端口绑定到主机
    Docker合成读取该文件并执行命令。

在构建和运行单个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
  • 链接angulardjango容器(因此其在Docker网络中的IP按名称解析)
  • 将端口804438000绑定到主机
  • 添加到网络my_net

(so所有3个容器都在同一网络中,因此可以彼此访问)
然后,对djangoangular容器执行类似的操作。
如果您只使用Docker命令,它将类似于:

docker build --name nginx .
docker run --link django:django angular:angular --expose 80 443 8000 --net my_net nginx


因此,虽然您可能不想为每个映像/容器键入所有这些选项和命令,但您可以编写一个docker-compose.yml文件,在该文件中以可读格式编写所有这些指令。

lnlaulya

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

字符串

相关问题