Docker Compose写法

Docker Compose 是一种用于定义和运行多容器 Docker 应用程序的工具。它使用 docker-compose.yml 文件来描述容器的配置。在 docker-compose.yml 文件中,主要包含以下元素:

1. version

指定 Compose 文件的版本,常用的版本是 "3"。版本不同可能影响一些指令的使用。

version: '3'

2. services

定义服务的关键部分。每个服务表示一个容器,服务的配置项包括镜像、环境变量、端口映射等。各个服务可以相互通信。

  web:
    image: nginx:latest
    ports:
      - "80:80"
    environment:
      - NGINX_HOST=localhost
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: example

以上示例中定义了两个服务:

  • web: 使用 Nginx 镜像并将主机的 80 端口映射到容器的 80 端口。
  • db: 使用 MySQL 5.7 镜像,并设置根密码。

3. volumes

用于将主机目录或文件挂载到容器中,或者创建 Docker 管理的持久存储。

  web:
    volumes:
      - ./web_data:/var/www/html

这个示例将主机的 ./web_data 目录挂载到容器的 /var/www/html 目录。

4. networks

定义网络使服务之间可以进行通信。Compose 可以自动创建默认网络,但你也可以手动定义。

  web:
    networks:
      - frontend
  db:
    networks:
      - backend

networks:
  frontend:
  backend:

这个示例定义了两个网络 frontendbackendweb 服务连接到 frontend 网络,而 db 服务连接到 backend 网络。

5. ports

指定端口映射,用于将主机端口映射到容器端口。

  web:
    ports:
      - "8080:80"

这个示例将主机的 8080 端口映射到容器的 80 端口。

6. environment

设置环境变量,通常用于服务的配置。

services:
  db:
    environment:
      MYSQL_DATABASE: mydb
      MYSQL_USER: user
      MYSQL_PASSWORD: password

7. depends_on

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

services:
  web:
    depends_on:
      - db

在这个示例中,web 服务依赖于 db 服务,db 会先启动。

8. build

如果需要从 Dockerfile 构建镜像,可以使用 build 指定 Dockerfile 的路径。

services:
  app:
    build: .

这个示例从当前目录中的 Dockerfile 构建镜像。

9. restart

设置服务的重启策略,确保服务在失败后自动重启。

services:
  web:
    restart: always

可选值包括:noalwayson-failureunless-stopped

10. command

指定服务启动时要执行的命令。

services:
  app:
    command: ["python", "app.py"]

示例完整 docker-compose.yml 文件

version: '3'

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

  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: example
    volumes:
      - db_data:/var/lib/mysql
    networks:
      - backend

volumes:
  db_data:

networks:
  frontend:
  backend:

这个 Compose 文件定义了一个 Nginx 和一个 MySQL 服务,它们分别连接到不同的网络,并设置了持久化卷和端口映射。

版权声明:
作者:Gweek
链接:https://bbs.geek.nyc.mn/archives/50
来源:Gweek postHub
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>
文章目录
关闭
目 录