实现docker-compose 部署spring cloud实现一次构建处处运行,在此作个记录html
docs.docker.com/compose/ins…java
FROM openjdk:8-jdk-alpine
COPY spring-cloud-admin-1.0.0-SNAPSHOT.jar app.jar
CMD java -jar app.jar
复制代码
服务启动顺序解决方案linux
因为spring cloud config 进行配置文件管理而docker-compose 启动时全部服务同时启动而config还没加载完成致使全部服务启动失败。git
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.ymlgithub
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
复制代码
Dockerfile 改造spring
#依赖环境
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.ymldocker
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启动bash
ps:注意修改spring cloud 内部的ip为docker 容器服务名不然服务之间没法联通,使用服务注册发现调用服务除外
复制代码
附: docker-compose 命令说明网络