Docker Compose

2024 年 7 月 24 日 星期三(已编辑)
/
48
摘要
docker compose的部分语法,使用方法,示例文件
这篇文章上次修改于 2024 年 7 月 24 日 星期三,可能部分内容已经不适用,如有疑问可询问作者。

Docker Compose

将多个服务分别创建不同的容器,然后一起运行

步骤

  1. 整理dockerfile文件/服务镜像配置
    1. 既可以将一个服务使用dockerfile构建,也可以直接在compose.yaml中直接构建
  2. 编写compose.yaml文件
  3. 执行docker compose up -d 如果其他命名文件,则要指定-f /path/to/docker-compose.yaml

指令语法

详细见官网

  • version 指docker compose文件的版本,不同版本支持的语法不同,暂时使用3.8
  • services下面罗列各种服务(mysql,redis,微服务项目的单个服务等)
  • 服务名称,如果是自己通过dockerfile创建的,最终生成的镜像名称为:dockerfile-<服务名称>,否则镜像名称就是image基于的镜像

服务下面的指令语法:

  • image基础镜像
  • container_name创建的容器名
  • environment环境变量
  • volume数据卷
  • networks网络(不同服务之间必须位于同一网络下才能互相访问)
  • labels标签
  • build基于的dockerfile
    • context放置dockerfile文件的路径,是一个目录
    • dockerfile指定具体的文件名
  • networks位于哪一个网络下面
  • ports端口映射
  • expose端口暴露

模板文件

version: '3.8'
services:
  mysql:
    image: mysql:8.0.19
    container_name: mysql
    environment:
      - MYSQL_ROOT_PASSWORD=123456
    volumes:
      - "/usr/dcoker-mysql/log:/var/log/mysql"
      - "/usr/docker-mysql/data:/var/lib/mysql"
      - "/usr/docker-mysql/conf:/etc/mysql/conf.d"
    networks:
      - mynetwork

  webyannqng:
    container_name: yannqingdemo1
    labels:
      - com.yannqing.description="彦青学习docker compose"
      - com.yannqing.owner="yannqing <yannqing.com>"
    build:
      context: .
      dockerfile: ./Dockerfile.dockerfile
    ports:
      - "6081:6081"
    expose:
      - 6081
    networks:
      - mynetwork

networks:
  mynetwork:
    external: true
  • Loading...
  • Loading...
  • Loading...
  • Loading...
  • Loading...