微服务迁移记(七):使用docker发布 springcloud应用续-发布service及web两个工程
上篇文章,发布分布式配置中心,参考《微服务迁移记(七):使用docker发布 springcloud应用》,发布以后可以通过:http://192.168.0.12:8000/actuator/health 访问服务健康状况。
今天在单位,利用中午休息时间,将服务实现层(相当于provider)和web层(相当于consumer)发布至虚拟机服务器。公司环境略有变化,每个项目下新增bootstrap-sit.yml,并设置spring.profiles.active = sit
一、环境介绍
虚拟机IP地址:192.168.202.102
consul:http://192.168.202.102:8500/
config:http://192.168.0.12:8000
redis:192.168.202.102 6379
计划将服务实现工程发布至9000端口,WEB工程发布至8080端口。
二、非发布工程发布至本地仓库
zyproject-common工程:公共类库,提供通用返回、分页类等。
zyproject-api-service工程:主要定义接口,供服务实现层和web层引用。
这两个工程平时调试时直接引用就可以了,发布出去的时候需要把jar包引用到相应的工程里。所以我们这里将两个工程先发布至本地仓库:
执行mvn clean install或点击相应的操作按钮:
成功后,会有一行日志提示发布本地仓库的位置如:
[INFO] Installing D:\xxx\zyproject-parent\zyproject-common\pom.xml to C:\Users\xx\.m2\repository\com\xxx\zyproject-common\1.0-SNAPSHOT\zyproject-common-1.0-SNAPSHOT.pom
相应目录下可以看到已生成相应的jar包。
三、服务实现工程发布
服务工程参考《微服务迁移记(四):公共层、接口层和实现层搭建》
1. pom配置
<!--docker--> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> </plugin> </plugins> </build>
2. Dockerfile
FROM java:8 ENV PROFILE prd ADD target/*.jar /home/app/system-service.jar EXPOSE 9000 ENTRYPOINT java ${JAVA_OPTS} -Djava.security.edg=file:/dev/./urandom -Duser.timezone=Asia/Shanghai -Dfile.encoding=UTF-8 -Dspring.profile.active=${PROFILE} -jar /home/app/system-service.jar
3.新建发布项,点击发布后成功运行。访问:http://192.168.202.102:9000/actuator/health成功
四、WEB工程发布
1. pom配置
同服务实现层。
2. Dockerfile
FROM java:8 ADD target/*.jar /home/app/web/zy-web.jar EXPOSE 8080 ENTRYPOINT java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -Duser.timezone=Asia/Shanghai -Dfile.encoding=UTF-8 -Dspring.profile.active=${PROFILE} -jar /home/app/web/zy-web.jar
3.新建发布项,发布成功后,访问:http://192.168.202.102:8080/manage跳转至登录界面。
服务全部发布完成后,在consul可以看到三个服务都注册成功: