千家信息网

Docker Compose如何部署复杂的App

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章给大家介绍Docker Compose如何部署复杂的App,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。如何使用docker-compose部署复杂的applicatio
千家信息网最后更新 2026年10月31日Docker Compose如何部署复杂的App

这篇文章给大家介绍Docker Compose如何部署复杂的App,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

如何使用docker-compose部署复杂的application。

先介绍一些docker-compose的简单命令:

docker-compose build

这个命令可以根据docker-compose.yml文件内容,构建服务镜像。

docker-compose up

这个命令可以将服务全部启动。

docker-compose down --rmi all

将docker-compose容器停止,并且删除相应容器镜像。

首先看一下系统架构:

每个微服务都是使用springboot实现的。

Eureka服务

他的application.properties内容如下:

server.port=8080eureka.instance.hostname=192.168.182.151# 是否向服务中心注册自己eureka.client.register-with-eureka=false# 是否检索服务eureka.client.fetch-registry=falseeureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/

elasticsearch-curl服务

application.properties内容如下:

spring.elasticsearch.rest.uris=192.168.182.149:9200logging.level.root=INFOlogging.file=user.loges.ips[0]=192.168.182.149es.port=9300es.clusterName=elasticsearch#注册中心的注册地址eureka.client.service-url.defaultZone=http://192.168.182.151:8080/eureka/spring.application.name=elasticsearch-curl-providerserver.port=8081

es-consumer服务

这个服务主要是用于消费es-curl服务的。他的application.propertis内容如下:

#注册中心的注册地址eureka.client.service-url.defaultZone=http://192.168.182.151:8080/eureka/spring.application.name=elasticsearch-consumerserver.port=8082

调用服务:

ResponseEntity objectResponseEntity = restTemplate.postForEntity("http://elasticsearch-curl-provider/add/"+indexName+"/" + type, data, Object.class);

Dockerfile文件内容

Eureka服务:

FROM java:8-alpineMAINTAINER "eureka server"ADD spring-cloud-eureka-server-1.0-SNAPSHOT.jar app.jarEXPOSE 8080ENTRYPOINT ["java", "-jar", "/app.jar"]

es-curl服务:

FROM java:8-alpineMAINTAINER "es-curl server"ADD elasticsearch-curl-1.0-SNAPSHOT.jar app.jarEXPOSE 8081ENTRYPOINT ["java", "-jar", "/app.jar"]

es-consumer服务:

FROM java:8-alpineMAINTAINER "es-curl server"ADD elasticsearch-curl-1.0-SNAPSHOT.jar app.jarEXPOSE 8081ENTRYPOINT ["java", "-jar", "/app.jar"]

docker-compose.yml文件

version: '3'services:    eureka:        build:            context: ./eureka            dockerfile: Dockerfile        container_name: ddy-eureka        ports:            - "8080:8080"    es-curl:        build:            context: ./es-curl/.            dockerfile: Dockerfile        container_name: ddy-es-curl        depends_on:            - eureka        ports:            - "8081:8081"        links:            - eureka    es-consumer:        build:            context: ./es-consumer/.            dockerfile: Dockerfile        container_name: ddy-consumer        depends_on:            - eureka            - es-curl        ports:            - "8082:8082"        links:            - eureka            - es-curl

操作

docker-compose builddocker-compose up

访问192.168.182.151:8080

更好的方式部署

在eureka服务中,修改application.properties内容:

eureka.instance.hostname=eureka

分别在es-curl和es-consumer服务中的application.properties修改内容:

eureka.client.service-url.defaultZone=http://eureka:8080/eureka/

这样就不需要知道主机的ip是多少了。

实验二:测试简单的eureka生产者和消费者:

项目代码:https://github.com/vincentduan/spring-cloud-project 下面的eureka目录下

eureka server

eureka server中的application.properties内容如下:

server.port=8080eureka.instance.hostname=eureka# 是否向服务中心注册自己eureka.client.register-with-eureka=false# 是否检索服务eureka.client.fetch-registry=falseeureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/

对应的Dockerfile内容如下:

FROM java:8-alpineMAINTAINER "es-curl server"ADD spring-cloud-eureka-server-1.0-SNAPSHOT.jar app.jarEXPOSE 8080ENTRYPOINT ["java", "-jar", "/app.jar"]

service-provider1

service-provider1中的application.properties内容如下:

# 注册中心的注册地址eureka.client.service-url.defaultZone=http://eureka:8080/eureka/# 服务名称--调用的时候根据名称来调用该服务的方法spring.application.name=service-provider-Aserver.port=8081

对应的Dockerfile内容如下:

FROM java:8-alpineMAINTAINER "es-curl server"ADD spring-cloud-eureka-provider-A-1-1.0-SNAPSHOT.jar app.jarEXPOSE 8081ENTRYPOINT ["java", "-jar", "/app.jar"]

service-provider2

service-provider2中的application.properties内容如下:

# 注册中心的注册地址eureka.client.service-url.defaultZone=http://eureka:8080/eureka/# 服务名称--调用的时候根据名称来调用该服务的方法spring.application.name=service-provider-Aserver.port=8082

应的Dockerfile内容如下:

FROM java:8-alpineMAINTAINER "es-curl server"ADD spring-cloud-eureka-provider-A-2-1.0-SNAPSHOT.jar app.jarEXPOSE 8082ENTRYPOINT ["java", "-jar", "/app.jar"]

consumer

consumer中的application.properties内容如下:

# 注册中心的注册地址eureka.client.service-url.defaultZone=http://eureka:8080/eureka/# 服务名称--调用的时候根据名称来调用该服务的方法spring.application.name=service-consumer-Aserver.port=8083

应的Dockerfile内容如下:

# 注册中心的注册地址eureka.client.service-url.defaultZone=http://eureka:8080/eureka/# 服务名称--调用的时候根据名称来调用该服务的方法spring.application.name=service-consumer-Aserver.port=8083

整个docker-compose.yml文件内容如下:

version: '3'services:    eureka:        build:            context: ./eureka            dockerfile: Dockerfile        container_name: ddy-eureka        ports:             - "8080:8080"    service-provider-1:        build:            context: ./provider-1            dockerfile: Dockerfile        container_name: ddy-provider-1        ports:            - "8081:8081"        depends_on:            - eureka        links:            - eureka        service-provider-2:        build:            context: ./provider-2            dockerfile: Dockerfile        container_name: ddy-provider-2        ports:            - "8082:8082"        depends_on:            - eureka        links:            - eureka    service-consumer:        build:            context: ./consumer            dockerfile: Dockerfile        container_name: ddy-consumer        ports:            - "8083:8083"        depends_on:            - eureka            - service-provider-1            - service-provider-2        links:            - eureka            - service-provider-1            - service-provider-2

执行docker-compose build执行构建。

使用命令docker-compose ps 可以查看服务情况:

docker-compose ps     Name             Command         State           Ports         --------------------------------------------------------------------ddy-consumer     java -jar /app.jar   Up      0.0.0.0:8083->8083/tcpddy-eureka       java -jar /app.jar   Up      0.0.0.0:8080->8080/tcpddy-provider-1   java -jar /app.jar   Up      0.0.0.0:8081->8081/tcpddy-provider-2   java -jar /app.jar   Up      0.0.0.0:8082->8082/tcp

docker-compose up 启动项目。

浏览器中输入ip地址:ip:8080可以查看到eureka服务已经启动了。并且能看到provider也已经注册进来了。输入ip:8083/gotoUser/jack多刷几次可以看到启用了不同的provider服务。

关于Docker Compose如何部署复杂的App就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

服务 内容 名称 地址 命令 文件 方法 时候 复杂 容器 更多 服务中心 检索服务 镜像 项目 帮助 检索 消费 输入 不同 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 什么是科技互联网 科技与互联网 互联网与科技发展 互联网金融 科技金融 迪茉互联网科技 广州互联网络科技有限公司 佩信高科技互联网 成都玖崟互联网科技有限公司乐商圈怎么样 金融科技与互联网金融相同和不同 语蝶互联网科技有限公司 移动互联网科技公司 恒生互联网科技指数跳水 开一家科技互联网公司需要多少钱 互联网科技大奖都有哪些公司 互联网科技扶贫时间 徐州市互联网科技有限公司 互联网方面的科技前沿 工业互联网科技创业 广州燕处互联网科技有限公司 北京互联网科技类企业分布 万易互联网科技有限公司 唐信互联网科技 佩信高科技互联网 汉立互联网科技有限公司联系电话 互联网和高科技公司 健康食品互联网创新科技园项目 广州百诚互联网科技有限公司官网 互联网与数字科技关系 陕西九四连强互联网科技有限公司 杭州融税互联网科技有限公司
0