Docker compose 多个服务/组件部署案例

编程教程 > Docker Case (16) 2025-04-17 11:34:43

项目依赖说明

Docker compose 多个服务组件部署案例_图示-eb663973282c443bbebc8d1152aa83b0.png

Docker compose 示例

docker-compose.yml 配置示例

version: "3.8"

networks:
  demoRouter:

services:
  demo-mysql8:
    image: mysql:8.0.36
    container_name: demo-mysql8
    hostname: demo-mysql8
    restart: always
#    ports:
#      - 3306:3306
    networks:
      - demoRouter
    command: [
      '--character-set-server=utf8mb4',
      '--collation-server=utf8mb4_unicode_ci'
    ]
    environment:
      - MYSQL_ROOT_PASSWORD=Pas#001
    volumes:
      - ./data/mysql/init.sql:/docker-entrypoint-initdb.d/init.sql #初始化脚本
      - ./data/mysql/data:/var/lib/mysql
      - ./data/mysql/conf.d:/etc/mysql/conf.d
      - /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime
    deploy:
      resources:
        limits:
          memory: 512M
    healthcheck: #健康检查
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
      interval: 10s
      timeout: 5s
      retries: 5

  demo-redis6:
    image: redis6:1.0
    build:
      context: ./data/redis
      dockerfile: Dockerfile
    container_name: demo-redis6
    hostname: demo-redis6
    restart: always
#    ports:
#      - 6379:6379
    networks:
      - demoRouter
    volumes:
      - ./data/redis/redis.conf:/usr/local/etc/redis/redis.conf
      - /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime
    deploy:
      resources:
        limits:
          memory: 256M
  demo-website:
    image: openjdk:17
    container_name: demo-website
    hostname: demo-website
    restart: always
    networks:
      - demoRouter
    volumes:
      - /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime
      - ./data/website/demo-website.jar:/app.jar
      - ./data/website/data:/var/app/data/
    command: ["java","-Xms256M","-Xmx256M","-XX:HeapDumpPath=/var/app/data/jvm/","-Duser.timezone=GMT+8", "-jar", "/app.jar","--spring.profiles.active=prod"]
    deploy:
      resources:
        limits:
          memory: 512M
    depends_on:
      demo-mysql8:
          condition: service_healthy #必须在mysql8组件启动后健康检查通过后启动
    healthcheck:
      test: ["CMD","curl","-f","http://127.0.0.1:8080"]
      interval: 10s
      timeout: 5s
      retries: 5
      start_period: 30s
  demo-nginx:
    image: nginx:1.19.10
    container_name: demo-nginx
    restart: always
    volumes:
      - ./data/nginx/nginx.conf:/etc/nginx/nginx.conf
      - ./data/nginx/conf.d:/etc/nginx/conf.d
      - ./data/nginx/html/:/usr/share/nginx/html
      - ./data/nginx/log:/var/log/nginx
    ports:
      - 80:80
      - 443:443
    networks:
      - demoRouter
    deploy:
      resources:
        limits:
          memory: 256M
    depends_on:
      demo-website:
        condition: service_healthy
    healthcheck:
      test: ["CMD","curl","-f","http://localhost"] #注意curl 检查的是http状态码,如果非200则错误
      interval: 10s
      timeout: 5s
      retries: 5
      start_period: 30s

文件结构参考

└─docker
    │  docker-compose.yml
    │
    └─data
        ├─mysql
        │  │  init.sql
        │  │
        │  └─conf.d
        │          my.ext.cnf
        │
        ├─nginx
        │  │  nginx.conf
        │  │
        │  ├─conf.d
        │  │  │  demo-website.conf
        │  │  │  default.conf
        │  │  │
        │  │  └─ssl
        │  │          demo.com.key
        │  │          demo.com_bundle.crt
        │  │
        │  ├─html
        │  └─log
        ├─redis
        │      Dockerfile
        │      redis.conf
        │
        └─website

配置文件内容参考

VIP资源,登录后查阅

此处内容需要开通会员后查阅(刷新)

登录/注册

 

以上文件均已测过。

 


评论
User Image
提示:请评论与当前内容相关的回复,广告、推广或无关内容将被删除。

相关文章
项目依赖说明Docker compose 示例docker-compose.yml 配置示例version: "3.8"networks: demoRouter
案例需求配置示例version: "3.8"networks: demoRouter:services: demo-mysql8: image: mysql:8
部署目录结构tree -a ././├── conf.d #nginx 自定义配置映射目录│ ├── default.conf #存放一些通用配置(可选)│ ├
在执行多次docker-compose build 之后,我们通过命令`docker images`可以看到很多的REPOSITORY 为<none&gtl; 且tag 也是<non...
Ubuntu 系统安装DockerUbuntu 在线安装 Docker-XQLEE'Blog (在线安装,需外网好)Ubuntu 安装Docker 国内适用-X
Docker中容器/镜像的备份、恢复和迁移今天,我们将学习如何快速地对docker容器进行快捷备份、恢复和迁移。Docker是一个开源平台,用于自动化部署应用,
docker 常用命令整理(持续更新)docker运行容器资源相关查看所有运行docker的资源消耗情况docker stats查看指定运行容器资源消耗情况do
Docker从容器复制文件到主机sudo docker cp 容器名称/容器id:容器文件/目录 主机目录示例:sudo docker cp nginx:/et
旧域名:https://hub.docker.com 新域名:https://hubgw.docker.com/
Docker简介Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可
Docker Nodejs 18.20.4 环境编译vue项目 sudo docker run --rm --name node18c -v /your/pro
snap 简介如果你在使用 Ubuntu 18.04/20.04 LTS 版本的 Ubuntu 系统,会发现系统里面多了一个应用格式包—— .snap 包。 S
官方命令docker system prune -a特别注意:该命令会删除没有被使用的镜像 over
背景Docker 对于新手开发者部署一些中间件或者开发环境比较友好,可惜官方image hub已被F...。内部使用必须依赖三方的镜像库,例如阿里云的https
Docker报错Error running DeviceCreate (createPool) dm_task_run failed,无法启动问题解决 由于我这