Doker:最新docker-compose操作

1. docker compose说明

目前docker新版本已经集成docker compose工具,直接使用"docker compose"命令就可以操作

2. docker-compose.yml文件说明

docker compose命令的运行需要docker-compose.yml文件的支持,可以指定文件位置,也可以在文件同目录运行命令

docker-compose.yml 示例文件

version: "3.8"
networks:
  my_net:
    name: my_net
    ipam:
      config:
        - subnet: 172.19.8.0/24
services:
  mysql:
    container_name: sc-mysql
    image: mysql:8
    restart: always
    environment:
      TZ: Asia/Shanghaidoc        # 配置时间为上海时间
      MYSQL_ROOT_PASSWORD: sc@123456        # 配置mysql密码
      MYSQL_ROOT_HOST: '%'        # 设置用户开启远程连接
    logging:
      driver: "json-file"
      options:
        max-size: "100m"
        max-file: "10"            # 设置日志文件个数
    ports:
      - 13306:3306
    networks:
      my_net:
        ipv4_address: 172.19.8.100
    command: [
      '--character-set-server=utf8mb4',    # 设置库的字符集
      '--collation-server=utf8mb4_general_ci',    # 默认排序方式
      '--default-authentication-plugin=mysql_native_password'    # 远程登录密码与用户设置的密码一致
    ]
    volumes:
      - /home/mysql/data:/var/lib/mysql    # 挂载mysql数据
      - /home/mysql/conf/my.cnf:/etc/mysql/conf.d/my.cnf    # 挂载mysql配置文件
    healthcheck:     # 验证服务是否健康
      test: mysql --user=root --password=sc@123456 -e 'select * from ry.gen_table_column'  # 检测命令,测试是否可以连接
      interval: 3s    # 健康检查的间隔,默认为30秒 单位(h/m/s)
      timeout: 5s    # 检测命令运行的超时时长,超时就认定这次检测为失败,单位(h/m/s)
      retries: 5    # 检测次数,连续失败指定次数后,容器状态视为 unhealthy

  nacos:
    container_name: sc-nacos
    image: nacos/nacos-server:v2.2.0
    restart: 
      # 最多重启10次
      on-failure: 10
    links:
      - mysql:db
    environment:
      PREFER_HOST_MODE: hostname
      MODE: standalone
      SPRING_DATASOURCE_PLATFORM: mysql
      MYSQL_SERVICE_HOST: 172.19.8.100
      MYSQL_SERVICE_PORT: 3306
      MYSQL_SERVICE_DB_NAME: nacos_config
      MYSQL_SERVICE_USER: root
      MYSQL_SERVICE_PASSWORD: sc@123456
      MYSQL_SERVICE_DB_PARAM: characterEncoding=utf8&connectTimeout=10000&socketTimeout=30000&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC
    logging:
      driver: "json-file"
      options:
        max-size: "100m"
        max-file: "10"
    ports:
      - 8848:8848
      - 9848:9848
      - 9849:9849
    networks:
      higentec_net:
        ipv4_address: 172.19.8.102
    depends_on:
      mysql:
        condition: service_healthy

  system:
    container_name: base-system
    build:
      context: /home/compose/service/
      dockerfile: DockerFile-system
    restart: always
    ports:
      - 9206:9206
    networks:
      my_net:
        ipv4_address: 172.19.8.206
    depends_on:  # 配置启动顺序
      mysql:     # 服务名
        condition: service_healthy   # 判断条件:服务是否健康

version

  compose文件格式版本,主要有3个版本(1.X、2.X、3.X)

networks

  配置自定义网段,配置之前需要查看docker当前网段有那些,不能重复配置

networks : my_net

  自定义网段名称,用于后续容器配置网段

networks : name

  指定自定义网段名称,用于后续容器配置网段

networks : ipam : config : - subnet

   指定网段

services

  services下面就是需要构建和启动的镜像服务

services : 自定义名称

  自定义名称mysql,用于compose管理服务的名称,不是容器名称;每个服务第一行都要有名称

services : 自定义名称 : container_name

  自定义容器名称,用于docker容器管理的自定义名称

services : 自定义名称 : image

  指定镜像创建并启动容器,每个服务运行方式只能通过image与build二选一

services : 自定义名称 : build

  通过Dockerfile文件构建镜像并启动容器,每个服务运行方式只能通过image与build二选一

services : 自定义名称 : build : context

  指定Dockerfile文件的路径,是目录路径不是文件路径

services : 自定义名称 : build : dockerfile

  指定Dockerfile文件名称,与上面context一起配置,用于查找Dockerfile文件地址

services : 自定义名称 : restart

  配置容器自启,restart: always

services : 自定义名称 : restart : on-failure

  配置容器最多重启10次,restart: on-failure: 10

services : 自定义名称 : environment

  添加环境变量,通过 - 可以设置多个值

services : 自定义名称 : ports

  端口映射,通过 - 可以设置多个映射端口,- 2020:2020/tcp - 3425:3425/udp

services : 自定义名称 : networks

  配置当前容器服务的ip

services : 自定义名称 : networks : 网段名 : ipv4_address

  配置具体网段内的固定ip

services : 自定义名称 : volumes

  配置服务文件与宿主机挂载映射

services : 自定义名称 : command

  配置容器启动后默认执行的命令

services : 自定义名称 : depends_on

  配置容器启动顺序,等待depends_on配置的服务启动后再启动

services : 自定义名称 : depends_on : service配置的自定义服务名

  配置容器启动顺序,等待depends_on配置的服务启动后再启动

services : 自定义名称 : depends_on : service配置的自定义服务名 : condition: service_healthy

  配置容器启动判断条件,配置服务健康检测

services : 自定义名称 : healthcheck

  配置服务健康检测功能

services : 自定义名称 : healthcheck : test

  健康检测命令

services : 自定义名称 : healthcheck : interval

  健康检测间隔,默认30秒,单位(h/m/s)

services : 自定义名称 : healthcheck : timeout

  超时时长,超时则判定这次检测为失败

services : 自定义名称 : healthcheck : retries

  健康检测次数

3. 多compose文件共用networks网段

version: "3.8"
networks:
  # 共用其他compose的网段
  higentec_net:
    external: true
services:
    ..........

4. docker compose常用命令

## 构建镜像并启动文件内配置的所有容器
docker compose up

## 构建镜像并启动所有容器,后台运行
docker compose up -d

## 停止并删除所有容器
docker compose down

## 重启所有服务
docker compose restart

## 启动服务
docker compose start

## 停止服务
docker compose stop

## 展示当前docker compose编排过并运行的所有容器(在docker-compose.yml文件同目录下运行)
docker compose ps

## 检查docker-compose.yml文件
docker compose config

## 检查docker-compose.yml文件,有问题就输出
docker compose config -q

 

文章转载至:https://blog.csdn.net/pcxiaoke/article/details/130977715

posted @ 2023-12-01 15:34  怒吼的萝卜  阅读(100)  评论(0编辑  收藏  举报