本章節,咱們經過docker將zyproject-configserver工程發佈到服務器。zyproject-configserver的搭建過程見:《微服務遷移記(三):配置中心SpringCloud Config搭建》html
1、環境介紹
docker服務器:192.168.0.12,已搭建好docker環境,並經過端口2375能夠正常訪問。java
consul服務器:192.168.0.12,8500可正常訪問mysql
WEB服務器:192.168.0.12,與redis和consul同一臺服務器。web
數據庫服務器:192.168.0.7,3306端口可正常訪問。redis
2、配置文件
bootstrap-prd.yml配置:spring
spring: application: name: config-server cloud: consul: host: 192.168.0.12 port: 8500 discovery: hostname: 192.168.0.12 #web服務和consul在一臺服務器上 config: server: jdbc: sql: SELECT akey,avalue FROM tb_config_server WHERE application=? AND aprofile=? AND label=? datasource: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://192.168.0.6:3306/zyconfig??useUnicode=true&characterEncoding=UTF-8&useSSL=false username: root password: xxxxx profiles: active: jdbc server: port: 9000
咱們將服務發佈至192.168.0.12 容器的 /home/app目錄下,並運行。Dockerfile配置sql
FROM java:8
# 下面兩行調用不到,先不配置。profile仍是配置在bootstrap.yml中 # ARG JRE_FILE # ENV PROFILE prd ADD target/*.jar /home/app/config.jar # EXPOSE命令只是聲明瞭容器應該打開的端口並無實際上將它打開! # 咱們是沒有辦法在Dockerfile裏面進行端口映射的,咱們只能在容器啓動的時候或者在docker-compose文件中使用ports來指定將要映射的端口 EXPOSE 8000 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/config.jar
3、docker發佈
1. 在idea中新建一個docker(file->setting->Build,Execution,Deployment->docker),輸入服務器地址和端口,並提示「Connection successful」docker
2. 父級工程的pom中引用docker相關配置數據庫
<!--docker配置--> <build> <plugins> <!--
不能在父工程引用插件,在每一個須要發佈成web服務的工程引用
common、api接口兩個工程不須要發佈,不能引用
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin>--> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <executions> <execution> <id>default</id> <goals> <goal>build</goal> <goal>push</goal> </goals> </execution> </executions> <configuration> <imageName>${project.artifactId}</imageName> <imageTags> <imageTag>latest</imageTag> </imageTags> <buildArgs> <JAR_FILE>${project.build.finalName}.jar</JAR_FILE> </buildArgs> </configuration> </plugin> </plugins> </build>
zyproject-configserver工程中只須要引用maven插件便可bootstrap
<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>
3. 打包,執行maven clean package
能夠直接在idea右邊的maven工具欄中雙擊clean,再雙擊package完成jar包生成。
4. 編輯idea的configuration,新增一個docker發佈項
注意:Dockerfile並不能將容器端口映射至服務器外部端口,因此咱們在Configuration中配置端口映射8000->8000(config最好內外一致,不然註冊中心會找不到服務)
6. 開始發佈,選擇到剛新建的docker運行。能夠在下方看到發佈和容器內tomcat運行日誌
訪問:http://192.168.0.12:8000/actuator/health
{ status: "UP" }
固然你也能夠登陸服務器,使用docker命令查看容器的運行狀態。
參考:《服務端docker 經常使用命令》