docker compose deploy spring cloud

本文详细介绍使用Docker和Docker Compose进行微服务架构的部署过程,涵盖配置中心、网关、监控中心、认证中心、注册中心、资源中心及各服务间的链接与配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Not easy at all!

docker containers

regist services

docker compose codes

version: '2'
services:
  # config center
  ms-config:
    container_name: ms-config
    build: ms-config
    image: frolvlad/alpine-oraclejdk8:slim
    ports:
      - 8888:8888
    hostname: ms-config
    restart: on-failure
    links:
      - "rabbit"
      - "mss-eureka1"
    volumes:
      - ./ms-config/target/ms-config-2.0.0.jar:/usr/app.jar
      - /usr/config-file:/usr/config-file
    entrypoint: ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/usr/app.jar"]
  ### gateway

  mss-gateway:
    container_name: mss-gateway
    build: mss-gateway
    image: frolvlad/alpine-oraclejdk8:slim
    ports:
      - 9030:9030
    environment:
      - "spring.profiles.active=test"
    hostname: mss-gateway
    restart: on-failure
    links:
      - "rabbit"
      - "mss-eureka1"
      - "ms-config"
    volumes:
      - ./mss-gateway/target/mss-gateway-2.0.0.jar:/usr/app.jar
    entrypoint: ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/usr/app.jar"]
  # monitor center

  mss-monitor:
    container_name: mss-monitor
    build: mss-monitor
    image: frolvlad/alpine-oraclejdk8:slim
    ports:
      - 9050:9050
    environment:
      - "spring.profiles.active=test"
    hostname: mss-monitor
    restart: on-failure
    links:
      - "rabbit"
      - "mss-eureka1"
      - "ms-config"
    volumes:
      - ./mss-monitor/target/mss-monitor-2.0.0.jar:/usr/app.jar
    entrypoint: ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/usr/app.jar"]
  ### auth center

  mss-oauth:
    container_name: mss-oauth
    build: mss-oauth
    image: frolvlad/alpine-oraclejdk8:slim
    ports:
      - 9060:9060
    environment:
      - "spring.profiles.active=test"
    hostname: mss-oauth
    restart: on-failure
    links:
      - "db:db"
      - "redis:redis"
      - "rabbit:rabbit"
      - "mss-eureka1:mss-eureka1"
      - "ms-config:ms-config"
    volumes:
      - ./mss-oauth/target/mss-oauth-2.0.0.jar:/usr/app.jar
    entrypoint: ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/usr/app.jar"]
  # register center
  mss-eureka1:
    container_name: mss-eureka1
    build: mss-registry
    image: frolvlad/alpine-oraclejdk8:slim
    ports:
      - 9010:9010
    environment:
      - "spring.profiles.active=test"
    hostname: mss-eureka1
    restart: on-failure
    volumes:
      - ./mss-registry/target/mss-registry-2.0.0.jar:/usr/app.jar
    entrypoint: ["java","-jar","/usr/app.jar"]
  ### resource center

  mss-resource:
    container_name: mss-resource
    build: mss-resource
    image: frolvlad/alpine-oraclejdk8:slim
    ports:
      - 9023:9023
    environment:
      - "spring.profiles.active=test"
    hostname: mss-resource
    restart: on-failure
    links:
      - "rabbit"
      - "mss-eureka1"
      - "mss-monitor"
      - "ms-config"

    volumes:
      - ./mss-resource/target/mss-resource-2.0.0.jar:/usr/app.jar
    entrypoint: ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/usr/app.jar"]
  ## mss-upms

  mss-upms:
    container_name: mss-upms
    build: mss-upms
    image: frolvlad/alpine-oraclejdk8:slim
    ports:
      - 9021:9021
    environment:
      - "spring.profiles.active=test"
    hostname: mss-upms
    restart: on-failure
    links:
      - "db"
      - "rabbit"
      - "mss-eureka1"
      - "ms-config"
    volumes:
      - ./mss-upms/target/mss-upms-2.0.0.jar:/usr/app.jar
    entrypoint: ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/usr/app.jar"]

  redis:
    image: redis:alpine
    ports:
      - 6379:6379
    hostname: redis
    restart: on-failure
    volumes:
      - ./other/redis/redis.conf:/etc/redis/redis.conf
      - ./other/redis/data:/data


  rabbit:
    image: rabbitmq:management
    hostname: rabbit
    restart: on-failure
    ports:
      - 15672:15672
      - 5672:5672

  db:
    image: mysql:5.7
    hostname: db
    restart: on-failure
    ports:
      - 3306:3306
    volumes:
      - ./other/db/setup.sh:/mysql/setup.sh
      - ./other/db/zuul_auth.sql:/mysql/zuul_auth.sql
      - ./other/db/privileges.sql:/mysql/privileges.sql
    environment:
      - MYSQL_ALLOW_EMPTY_PASSWORD=yes
    entrypoint: ["sh","/mysql/setup.sh"]

 

在部署 Spring Cloud 微服务时,使用 DockerDocker Compose 可以显著简化环境配置和依赖管理。以下是详细的部署流程: ### 环境准备 首先需要安装 Docker 以及 Docker Compose 插件[^1]: ```bash sudo yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin ``` 确保安装完成后启动并启用 Docker 服务: ```bash sudo systemctl start docker sudo systemctl enable docker ``` ### 编写 `Dockerfile` 文件 为每个微服务模块创建独立的 `Dockerfile`,以便构建对应的镜像。以下是一个简单的示例: ```dockerfile # 使用 OpenJDK 基础镜像 FROM openjdk:8-jdk-alpine # 拷贝项目 JAR 包到容器中 COPY your-spring-boot-app.jar app.jar # 设置入口命令 ENTRYPOINT ["java", "-jar", "/app.jar"] ``` 请根据实际项目的名称和路径进行替换。 ### 编写 `docker-compose.yml` 文件 定义所有微服务及其依赖关系,例如 Eureka Server、Config Server、Gateway 以及其他业务服务。以下是一个基础模板: ```yaml version: '3.8' services: eureka-server: image: eureka-server:latest build: context: ./eureka-server dockerfile: Dockerfile ports: - "8761:8761" networks: - spring-cloud-network config-server: image: config-server:latest build: context: ./config-server dockerfile: Dockerfile ports: - "8888:8888" depends_on: - eureka-server networks: - spring-cloud-network gateway-service: image: gateway-service:latest build: context: ./gateway-service dockerfile: Dockerfile ports: - "8080:8080" depends_on: - eureka-server - config-server networks: - spring-cloud-network networks: spring-cloud-network: driver: bridge ``` 在此文件中,各个服务通过 `depends_on` 定义了启动顺序依赖关系,从而确保注册中心(Eureka)先于其他服务启动。 ### 编写自动化部署脚本 为了提高效率,可以编写一个 Shell 脚本来完成构建、启动、停止等操作[^2]。以下是一个完整的脚本示例: ```bash #!/bin/bash # 参数判断 if [ $# -lt 1 ]; then echo "用法: $0 [参数名]" echo "可用函数: build, start_all, stop_all, remove_all, status" exit 1 fi # 构建所有镜像 build_images() { docker-compose build } # 启动所有服务(后台模式) start_all_service() { docker-compose up -d } # 查看运行状态 status() { docker-compose ps } # 停止所有服务 stop_all_service() { docker-compose stop } # 删除所有服务 remove_all_service() { docker-compose stop docker-compose rm -f } case "$1" in "build") build_images ;; "start_all") start_all_service ;; "stop_all") stop_all_service ;; "remove_all") remove_all_service ;; "status") status ;; *) echo "错误: 未知的参数 '$1'" echo "可用函数: build, start_all, stop_all, remove_all, status" exit 1 ;; esac ``` 赋予执行权限后即可运行该脚本: ```bash chmod +x deploy_docker_compose.sh ./deploy_docker_compose.sh build ./deploy_docker_compose.sh start_all ``` ### 验证部署 可以通过访问相关服务的端口来验证是否成功启动。例如: - **Eureka Server**: 访问 `http://localhost:8761` 查看注册中心界面。 - **Gateway Service**: 发送请求到 `http://localhost:8080` 测试网关路由功能。 此外,还可以使用以下命令查看日志: ```bash docker-compose logs -f <service_name> ``` ### 清理与维护 如果需要清理整个环境,可以使用以下命令组合: ```bash ./deploy_docker_compose.sh stop_all ./deploy_docker_compose.sh remove_all ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值