Karp 的技术博客

docker-compose.yml 是 Docker Compose 的配置文件,用于定义和运行多容器 Docker 应用。通过该文件,您可以轻松配置应用的服务、网络和卷等。以下是对 docker-compose.yml 文件的详细解析。

1. 基本结构

一个简单的 docker-compose.yml 文件结构如下:

version: '3'  # Docker Compose 文件的版本

services:     # 定义服务
  web:        # 服务名称
    image: nginx   # 使用的镜像
    ports:
      - "8080:80"  # 映射端口

2. 关键字段

2.1 version

指定 Docker Compose 文件的版本。不同版本支持的功能可能有所不同。常用版本包括 2.x3.x

2.2 services

定义应用的各个服务。每个服务都有自己的配置,包括镜像、环境变量、端口映射等。

2.3 服务配置选项

2.3.1 image

指定要使用的 Docker 镜像,可以是本地镜像或远程镜像。

image: nginx:latest  # 使用最新的 nginx 镜像

2.3.2 build

如果需要从 Dockerfile 构建镜像,可以使用 build 选项。

build:
  context: ./app  # Dockerfile 所在目录
  dockerfile: Dockerfile  # 指定 Dockerfile 名称(可选)

2.3.3 ports

定义容器内部和外部的端口映射。

ports:
  - "8080:80"  # 将主机的 8080 端口映射到容器的 80 端口

2.3.4 volumes

挂载卷,可以用于持久化数据或共享数据。

volumes:
  - ./data:/data  # 将主机的 ./data 目录挂载到容器的 /data 目录

2.3.5 environment

设置环境变量。

environment:
  - ENV=production
  - DEBUG=false

2.3.6 depends_on

指定服务之间的依赖关系,确保某个服务在其他服务启动之前启动。

depends_on:
  - db

2.3.7 networks

定义网络配置,服务可以通过网络进行通信。

networks:
  my_network:
    driver: bridge

3. 完整示例

以下是一个完整的 docker-compose.yml 示例,包含 Web 服务和数据库服务:

version: '3.8'

services:
  web:
    image: nginx:latest
    ports:
      - "8080:80"
    volumes:
      - ./html:/usr/share/nginx/html
    depends_on:
      - db

  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: example
      MYSQL_DATABASE: mydb
    volumes:
      - db_data:/var/lib/mysql

volumes:
  db_data:  # 定义持久化数据卷

4. 常用命令

使用 Docker Compose 管理应用的常用命令包括:

  • 启动服务

    docker-compose up
  • 后台启动服务

    docker-compose up -d
  • 停止服务

    docker-compose down
  • 查看服务日志

    docker-compose logs

5. 总结

docker-compose.yml 文件是 Docker Compose 的核心部分,通过它可以方便地定义和管理多容器应用。掌握其结构和配置选项,能够帮助用户快速部署和管理复杂的应用环境。

版权属于:karp
作品采用:本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
更新于: 2024年10月21日 07:02
0

目录

来自 《`docker-compose.yml` 文件详解》