docker-compose 的语法主要围绕 docker-compose.yml 文件,以下是各个部分的详解:

1. 版本(Version)

version: '3.8'
  • 指定 docker-compose 文件的版本。不同版本支持不同的特性,建议使用最新的稳定版本。

2. 服务(Services)

services:
  web:
    image: my-web-app:latest
    build: ./web
  • services: 定义应用的各个服务。

  • web: 服务名称,可以自定义。

  • image: 使用的 Docker 镜像。

  • build: 指定 Dockerfile 的路径进行构建。

3. 端口映射(Ports)

ports:
  - "5000:5000"
  • 将容器内的端口映射到主机端口,格式为 主机端口:容器端口。

4. 环境变量(Environment)

environment:
  POSTGRES_DB: mydb
  POSTGRES_USER: user
  • 设置容器内的环境变量,支持数组和键值对的形式。

5. 依赖关系(Depends_on)

depends_on:
  - db
  • 指定当前服务依赖于其他服务,确保启动顺序,但不等待服务就绪。

6. 卷(Volumes)

volumes:
  - db_data:/var/lib/postgresql/data
  • 用于数据持久化,格式为 宿主机路径:容器路径 或 卷名:容器路径。

7. 网络(Networks)

networks:
  my_network:
  • 定义服务间的网络。可以指定网络类型(如桥接、主机等)。

8. 构建参数(Build)

build:
  context: .
  dockerfile: Dockerfile
  • context: 构建上下文,通常是当前目录。

  • dockerfile: 指定 Dockerfile 名称,默认是 Dockerfile。

9. 重启策略(Restart)

restart: always
  • 定义重启策略,如 no, always, unless-stopped, on-failure。

10. 其他设置

  • command: 覆盖容器启动时的默认命令。

  • healthcheck: 定义服务的健康检查。

  • extra_hosts: 为容器添加额外的主机名映射。

示例

以下是一个完整的示例:

version: '3.8'
​
services:
  web:
    image: my-web-app:latest
    build:
      context: ./web
      dockerfile: Dockerfile
    ports:
      - "5000:5000"
    environment:
      DATABASE_URL: postgres://user:password@db/mydb
    depends_on:
      - db
    networks:
      - my_network
​
  db:
    image: postgres:13
    environment:
      POSTGRES_DB: mydb
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password
    volumes:
      - db_data:/var/lib/postgresql/data
    networks:
      - my_network
​
volumes:
  db_data:
​
networks:
  my_network:

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐