博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于前两章的docker-compose 部署Spring Cloud
阅读量:6926 次
发布时间:2019-06-27

本文共 4321 字,大约阅读时间需要 14 分钟。

概述

实现docker-compose 部署spring cloud实现一次构建到处运行,在此做个记录

1、安装docker-compose

2、构建Dockerfile

FROM openjdk:8-jdk-alpineCOPY spring-cloud-admin-1.0.0-SNAPSHOT.jar app.jarCMD java -jar app.jar复制代码

3、构建docker-compose 文件

1、构建过程遇到的问题

1、spring cloud 服务之间启动顺序问题

1、解决方案(拆分docker-compose)

由于spring cloud config 进行配置文件管理而docker-compose 启动时所有服务同时启动而config还没加载完成导致所有服务启动失败。

version: '2'services:       # 自定义服务名    spring-cloud-eureka:        # 总起重启        restart: always        # 别名        container_name: spring-cloud-eureka        # 编译DockerFile所在路径        build: spring-cloud-eureka        # 端口映射        ports:          - 8081:8081        # 网络桥接        networks:          - springCloud        # 等待某服务启动后启动服务         depends_on:         - spring-cloud-config             spring-cloud-config:         restart: always        container_name: spring-cloud-config        build: spring-cloud-config        ports:          - 8888:8888               networks:          - springCloud                        # 构建网络环境    networks:     springCloud:       driver: bridge复制代码

docker-compose-tow.yml

version: '2'services:          spring-cloud-service:         restart: always        container_name: spring-cloud-service        build: spring-cloud-service        ports:          - 8082:8082                                     spring-cloud-feign:         restart: always        container_name: spring-cloud-feign        build: spring-cloud-feign        ports:          - 8083:8083                 spring-cloud-gateway:         restart: always        container_name: spring-cloud-gateway        build: spring-cloud-gateway        ports:          - 8085:8085               spring-cloud-zipkin:         restart: always        container_name: spring-cloud-zipkin        build: spring-cloud-zipkin        ports:          - 8084:8084                   spring-cloud-admin:         restart: always        container_name: spring-cloud-admin        build: spring-cloud-admin        ports:          - 8087:8087   # 加入某个已存在的网络环境    networks:  default:    external:      name: docker-springCloud复制代码
2、解决方案(使用Dockerize插件监听服务启动)

Dockerfile 改造

#依赖环境FROM openjdk:8-jdk-alpine#设置变量ENV DOCKERIZE_VERSION v0.6.1#下载插件RUN wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \    && tar -C /usr/local/bin -xzvf dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \    && rm dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz#拷贝jar文件COPY spring-cloud-admin-1.0.0-SNAPSHOT.jar app.jar#执行命令  -timeout 超时多久运行jar   -wait 等待http地址访问成功运行jar  wait 也可以是tcp://xxxx ENTRYPOINT ["dockerize", "-timeout", "5m", "-wait", "http://192.168.1.5:8888/application/dev/master", "java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "app.jar"]复制代码

docker-compose.yml

version: '2'services:       # 自定义服务名    spring-cloud-eureka:        # 总起重启        restart: always        # 别名        container_name: spring-cloud-eureka        # 编译DockerFile所在路径        build: spring-cloud-eureka        # 端口映射        ports:          - 8081:8081             spring-cloud-config:         restart: always        container_name: spring-cloud-config        build: spring-cloud-config        ports:          - 8888:8888                  spring-cloud-service:         restart: always        container_name: spring-cloud-service        build: spring-cloud-service        ports:          - 8082:8082                                   spring-cloud-feign:         restart: always        container_name: spring-cloud-feign        build: spring-cloud-feign        ports:          - 8083:8083                       spring-cloud-gateway:         restart: always        container_name: spring-cloud-gateway        build: spring-cloud-gateway        ports:          - 8085:8085                                  spring-cloud-zipkin:         restart: always        container_name: spring-cloud-zipkin        build: spring-cloud-zipkin        ports:          - 8084:8084                                  spring-cloud-admin:         restart: always        container_name: spring-cloud-admin        build: spring-cloud-admin        ports:          - 8087:8087                     复制代码

运行结果其他服务都在等待config启动

3、测试docker-compose 部署spring cloud

ps:注意修改spring cloud 内部的ip为docker 容器服务名否则服务之间无法联通,使用服务注册发现调用服务除外复制代码

附:

转载于:https://juejin.im/post/5ce57441f265da1bca51b2eb

你可能感兴趣的文章
利用自然数的标准分解证明可数集合的所有有限子集形成的集合是可数集
查看>>
很好的验证码
查看>>
JScriptHelper类
查看>>
Web安全测试工具小集
查看>>
小论数据分析的方法及思维
查看>>
docker 私有仓库搭建
查看>>
工欲善其事必先利其器——产品篇
查看>>
『计算机视觉』Mask-RCNN_训练网络其三:训练Model
查看>>
cf1060E. Sergey and Subway(树形dp)
查看>>
【AI】Ubuntu NVIDIA CUDA CUDNN安装配置
查看>>
npm和yarn的使用对比
查看>>
Windows下Kettle定时任务执行并发送错误信息邮件
查看>>
【转】强化学习(一)Deep Q-Network
查看>>
文件内容合并
查看>>
全局光照技术解析Global Illumination Explained
查看>>
未来之诗
查看>>
(原創) 使用preprocessor directive留住debug code (.NET) (C#)
查看>>
(轉貼) 未來台北捷運路線圖 (News)
查看>>
一个工作流程启动的支持事务的存储过程
查看>>
流程 - 发布【敏捷方法之Scrum v0.2.pdf】
查看>>