微服務遷移記(七):使用docker發佈 springcloud應用

本章節,咱們經過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 經常使用命令

相關文章
相關標籤/搜索