Docker-compose

介绍

Compose 是 Docker 公司推出的一个工具软件,可以管理多个 Docker 容器组成一个应用。你需要定义一个 YAML 格式的配置文件docker-compose.yml,写好多个容器之间的调用关系。然后,只要一个命令,就能同时启动、关闭这些容器。

核心组成

1、一文件
docker-compose.yml
2、两要素

  • 服务(service)
    一个个应用容器实例,比如订单微服务、库存微服务、mysql容器、nginx容器或者redis容器。
  • 工程(project)
    由一组关联的应用容器组成的一个完整业务单元,在docker-compose.yml文件中定义。

上线步聚

  • 编写Dockerfile定义各个微服务应用并构建出对应的镜像文件
  • 使用docker-compose.yml定义一个完整业务单元,安排好整体应用中的各个容器服务
  • 最后,执行docker-compose up命令来启动并运行整个应用程序,完成一键部署上线

常用命令

docker-compose -h                            #查看帮助
docker-compose up                            #启动所有docker-compose服务
docker-compose up -d                         #启动所有docker-compose服务并后台运行
docker-compose down                          #停止并删除容器、网络、卷、镜像。
docker-compose logs                          #查看服务日志
docker-compose logs -f                       #查看服务日志(实时输出)
docker-compose logs <service_name>           #查看服务日志(指定服务)

docker-compose restart                       #重启服务
docker-compose restart <service_name>        #重启指定服务

docker-compose exec <service_name> /bin/sh   #进入正在运行的容器
docker-compose config                        #查看服务详情
dokcer-compose config -q                     #检查配置,有问题才有输出

docker-compose pause                         #暂停服务中的所有容器
docker-compose unpause                       #恢复之前暂停的服务
docker-compose kill                          #杀死服务中的所有容器
docker-compose pull                          #拉取服务依赖的镜像
docker-compose build --no-cache              #构建服务(不使用缓存)
docker-compose build                         #构建或重建服务
[root@host script]# cat zabbix-docker.yml
version: '3'
networks:
  zabbix-net:
    external: true
services:
  mysql:
    image: mysql:8.0
    container_name: mysql-server-5.2.6
    security_opt:
      - seccomp:unconfined
    restart: always
    command:
      --character-set-server=utf8
      --collation-server=utf8_bin
      --default-authentication-plugin=mysql_native_password
      --binlog_expire_logs_seconds=604800
      --log_error=error.log
      --slow_query_log=1
      --slow_query_log_file=slow.log
      --log_queries_not_using_indexes=1
      --log_slow_admin_statements=1
      --log_slow_slave_statements=1
      --log_throttle_queries_not_using_indexes=10
      --long_query_time=2
      --min_examined_row_limit=100
    networks:
      - zabbix-net
    ports:
      - '30006:3306'
    environment:
      MYSQL_DATABASE: zabbix
      MYSQL_USER: zabbix
      MYSQL_PASSWORD: zabbix
      MYSQL_ROOT_PASSWORD: xxx
    volumes:
      - /data/zabbix_data/mysql:/var/lib/mysql
    labels:
      service: zabbix-mysql
    logging:
      options:
        labels: "service"

  java-gateway:
    image: hub.docker.com/zabbix/zabbix-java-5.2.6:v1
    container_name: zabbix-java-5.2.6
    restart: always
    networks:
      - zabbix-net
    depends_on:
      - mysql

  zabbix-server:
    image: hub.docker.com/zabbix/zabbix-server-5.2.6:v1
    container_name: zabbix-server-5.2.6
    environment:
      DB_SERVER_HOST: mysql-server-5.2.6
      MYSQL_DATABASE: zabbix
      MYSQL_USER: zabbix
      MYSQL_PASSWORD: zabbix
      MYSQL_ROOT_PASSWORD: xxx
      ZBX_JAVAGATEWAY: zabbix-java-5.2.6
      ZBX_VMWARECACHESIZE: 1G
      ZBX_CACHESIZE: 2G
    ports:
      - '10051:10051'
    networks:
      - zabbix-net
    volumes:
      - /etc/localtime:/etc/localtime:ro
    depends_on:
      - mysql
      - java-gateway
    labels:
      service: zabbix-server
    logging:
      options:
        labels: "service"

  zabbix-web:
    image: hub.docker.com/zabbix/zabbix-web-5.2.6:v9.2
    container_name: zabbix-web-5.2.6
    restart: always
    environment:
      DB_SERVER_HOST: mysql-server-5.2.6
      MYSQL_DATABASE: zabbix
      MYSQL_USER: zabbix
      MYSQL_PASSWORD: zabbix
      MYSQL_ROOT_PASSWORD: xxx
      ZBX_SERVER_HOST: zabbix-server-5.2.6
      PHP_TZ: Asia/Shanghai
    networks:
      - zabbix-net
    ports:
            #      - ${WPORT}:8080
      - '1234:8080'
    volumes:
      - /data/zabbix_data/web:/usr/share/zabbix
      - /data/zabbix_data/zabbix-web:/etc/zabbix/web
    depends_on:
      - mysql
      - java-gateway
      - zabbix-server
    labels:
      service: zabbix-web
    logging:
      options:
        labels: "service"
posted @   *一炁化三清*  阅读(26)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
点击右上角即可分享
微信分享提示