专业的编程技术博客社区

网站首页 > 博客文章 正文

Docker Compose配置文件详解(docker compose profile)

baijin 2024-09-17 12:11:26 博客文章 5 ℃ 0 评论

Docker Compose 是一个用于定义和运行多容器 Docker 应用的工具。通过使用 YAML 文件来配置应用的服务,它可以简化复杂应用的管理。本文将详细介绍 Docker Compose 配置文件 docker-compose.yml 的常用语法和配置选项。

一、基本结构

Docker Compose 配置文件使用 YAML 格式,文件名通常为 docker-compose.yml。它包含多个服务定义,每个服务定义了一个容器。

示例docker-compose.yml:

version: '3.8'  # 指定 Docker Compose 文件的版本

services:  # 服务定义部分
  web:  # 服务名称
    image: nginx:latest  # 使用的镜像
    ports:  # 端口映射
      - "80:80"
    volumes:  # 卷映射
      - "./html:/usr/share/nginx/html"
    networks:  # 连接的网络
      - my-network

  db:
    image: mysql:5.7
    environment:  # 环境变量
      MYSQL_ROOT_PASSWORD: example
    volumes:
      - "db-data:/var/lib/mysql"
    networks:
      - my-network

# 网络定义部分
networks:
  my-network:

# 卷定义部分
volumes:
  db-data:

二、配置选项详解

1.version

指定 Docker Compose 文件的版本,以下为常用版本:

version: '3.8'

2.services

定义整个应用的服务,每个服务代表一个 Docker 容器实例。

示例:

services:
  web:
    image: nginx:latest

3.image

指定服务使用的 Docker 镜像,可以是 DockerHub 上的公开镜像,也可以是私有的镜像:

image: nginx:latest

4.build

用于构建本地 Docker 镜像,指定 Dockerfile 的路径:

build: 
  context: ./dir
  dockerfile: Dockerfile

或者简写形式:

build: ./dir

5.ports

端口映射,可以将容器内部端口映射到主机端口:

ports:
  - "8080:80"

6.volumes

卷映射,可以将主机目录或数据卷挂载到容器内部:

volumes:
  - "./html:/usr/share/nginx/html"  # 主机目录挂载
  - "db-data:/var/lib/mysql"  # 数据卷挂载

7.environment

设置环境变量,可以直接在配置文件中定义,也可以从外部文件读取:

environment:
  MYSQL_ROOT_PASSWORD: example

或者从文件中读取:

env_file: 
  - .env

8.networks

定义和使用网络,以实现容器之间的通信:

networks:
  - my-network

在 networks 中定义具体的网络:

networks:
  my-network:
    driver: bridge  # 网络类型

9.depends_on

定义服务之间的依赖关系,确保在启动服务时按顺序启动:

depends_on:
  - db

10.restart

定义容器的重启策略:

restart: always  # 可选值为 no, on-failure, always, unless-stopped

11.command

覆盖容器启动时执行的命令:

command: ["bundle", "exec", "puma", "-C", "config/puma.rb"]

12.entrypoint

覆盖容器的默认执行入口点:

entrypoint: ["./entrypoint.sh"]

13.healthcheck

设置容器的健康检查:

healthcheck:
  test: ["CMD", "curl", "-f", "http://localhost"]
  interval: 1m30s
  timeout: 10s
  retries: 3

14.logging

配置容器的日志记录选项:

logging:
  driver: "json-file"
  options:
    max-size: "200k"
    max-file: "10"

三、完整示例

以下是一个包含常用配置的完整示例,用于启动一个包含 Nginx 和 MySQL 的简单应用:

version: '3.8'

services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - "./html:/usr/share/nginx/html"
    networks:
      - my-network
    depends_on:
      - db
    restart: always

  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: example
    volumes:
      - "db-data:/var/lib/mysql"
    networks:
      - my-network
    restart: always
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
      interval: 1m30s
      timeout: 10s
      retries: 3

networks:
  my-network:
    driver: bridge

volumes:
  db-data:

四、运行和管理

1. 启动服务

docker-compose up -d

2. 停止服务

docker-compose down

3. 查看日志

docker-compose logs

4. 重启服务

docker-compose restart

5. 查看容器状态

docker-compose ps

五、总结

通过 Docker Compose 可以简化多容器 Docker 应用的配置和管理。它让开发和部署变得更加容易,实现了应用定义即配置的目标。掌握 Docker Compose 的配置方法,将为您带来更高效的容器化应用开发体验。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表