SpringCloud(第 053 篇)CentOS7 中用 Docker 部署一個簡單的基於 Eureka 服務治理髮現的項目

SpringCloud(第 053 篇)CentOS7 中用 Docker 部署一個簡單的基於 Eureka 服務治理髮現的項目

-java

1、大體介紹

一、糾結了一下下,這麼簡單的部署流程是否須要詳細的貼出來,然而糾結了一下仍是將這個簡單的部署流程補充完整了;
二、通過上節的講解,相信你們已經對docker的命令操做都有了必定的瞭解,這裏我就暫且默認你們都擁有了可操做的環境以及瞭解操做指令;
三、本章節基於docker來操做部署SpringCloud項目;
四、注意在利用idea打包生成jar文件時,裏面的localhost請改爲你的宿主機的ip地址,可是若是統一部署到測試或者生產環境的話,請改成動態配置,方便動態修改,所以我這裏作測試的話,首先將代碼中的localhost就直接改爲宿主機的ip地址,而後再打出jar包;

2、針對簡單用戶微服務進行docker部署

2.1 利用 idea 對 springms-simple-provider-user 項目進行打包

一、這個打包就看你們喜愛,用命令打包也好,用鼠標操做打包也好,反正目的就是在項目的target目錄下生成jar文件便可;

二、本人這裏使用ideaIDE開發工具,就沿着 Maven Project -> springms-simple-provider-user -> Lifecycle -> package 路徑雙擊 package 便可;

三、而後就會看到項目中 springms-simple-provider-user/target 下多了一個 springms-simple-provider-user-1.0-SNAPSHOT.jar 文件;

2.2 上傳 springms-simple-provider-user-1.0-SNAPSHOT.jar 至 linux 服務器

一、本人在Linux下喜歡操做命令,因此這裏就給你們演示一下怎麼用SecureCRT執行命令將文件傳到服務器;

二、首先登陸上服務器就不用說了,而後在SecureCRT中操做 「alt+p」 快捷鍵操做,此時將會打開一個新的頁籤,頁籤的第一行則是 「sftp>」 這個字樣,說明已經進入了上傳文件的命令窗口了;

三、找到須要將文件放置到服務器的位置;
    sftp> cd /home/docker/demo
    sftp> put D:\ANDROID\Code\Spring-Cloud\SpringCloudTutorial\springms-simple-provider-user\target\springms-simple-provider-user-1.0-SNAPSHOT.jar
    Uploading springms-simple-provider-user-1.0-SNAPSHOT.jar to /home/docker/demo/springms-simple-provider-user-1.0-SNAPSHOT.jar
      100% 31995KB   1333KB/s 00:00:24     
    D:/ANDROID/Code/Spring-Cloud/SpringCloudTutorial/springms-simple-provider-user/target/springms-simple-provider-user-1.0-SNAPSHOT.jar: 32763475 bytes transferred in 24 seconds (1333 KB/s)
    sftp> 

四、而後切換到剛剛敲 「alt+p」 快捷鍵的那個窗口,執行命令查看文件是否上傳成功
    [root@svr01 ~]#  ls /home/docker/demo
    springms-simple-provider-user-1.0-SNAPSHOT.jar

2.3 編寫並保存 Dockerfile 文件

一、進入 /home/docker/demo
    [root@svr01 ~]#  cd /home/docker/demo

二、採用 vim或者vi 命令建立 Dockerfile 文件,並輸入文件內容
    [root@svr01 demo]#  vim Dockerfile
    FROM frolvlad/alpine-oraclejdk8:slim
    VOLUME /tmp
    ADD springms-simple-provider-user-1.0-SNAPSHOT.jar app.jar
    RUN sh -c 'touch /app.jar'
    ENV JAVA_OPTS=""
    ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]

三、保存 Dockerfile 文件內容,執行命令順序以下,命令的前後執行順序爲:
    Esc
    Shift+:
    wq
    Enter

2.4 用 docker build 命令將給定的Dockerfile和上下文以構建Docker鏡像

一、構建鏡像
    [root@svr01 demo]# docker build -t springms-simple-provider-user .
    Sending build context to Docker daemon 32.77 MB
    Step 1 : FROM frolvlad/alpine-oraclejdk8:slim
     ---> 4f03dc990224
    Step 2 : VOLUME /tmp
     ---> Running in dfd09d567767
     ---> f76843b950c7
    Removing intermediate container dfd09d567767
    Step 3 : ADD springms-simple-provider-user-1.0-SNAPSHOT.jar app.jar
     ---> e009af0cc3bc
    Removing intermediate container 0884992be7c0
    Step 4 : RUN sh -c 'touch /app.jar'
     ---> Running in 4fb67225860f
     ---> 06320de95ea3
    Removing intermediate container 4fb67225860f
    Step 5 : ENV JAVA_OPTS ""
     ---> Running in 519c55360fda
     ---> bb2377cac425
    Removing intermediate container 519c55360fda
    Step 6 : ENTRYPOINT sh -c java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar
     ---> Running in 95eb606d0e57
     ---> 2aaa88be3d65
    Removing intermediate container 95eb606d0e57
    Successfully built 2aaa88be3d65

二、查看產生的鏡像
    [root@svr01 demo]# docker images
    REPOSITORY                             TAG                 IMAGE ID            CREATED             SIZE
    springms-simple-provider-user          latest              2aaa88be3d65        6 seconds ago       235.6 MB
    docker.io/centos                       v2                  11efb35f320c        7 hours ago         307.5 MB
    docker.io/frolvlad/alpine-oraclejdk8   latest              4f03dc990224        12 days ago         170.1 MB
    frolvlad/alpine-oraclejdk8             slim                4f03dc990224        12 days ago         170.1 MB
    docker.io/centos                       latest              3fa822599e10        2 weeks ago         203.5 MB
    docker.io/hello-world                  latest              f2a91732366c        3 weeks ago         1.848 kB

2.5 啓動剛剛構建好的 docker 鏡像

[root@svr01 demo]# docker run -p 8000:8000 -t springms-simple-provider-user

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v1.4.1.RELEASE)
 。。。。
 【【【【【【 簡單用戶微服務 】】】】】】已啓動.

2.6 測試docker部署springcloud項目是否成功

一、還記得我麼在電腦本機測試的地址麼,地址爲:http://localhost:8000/simple/1 ?
二、如今目前我在阿里雲上部署操做,因此這個localhost我就須要換成阿里雲的ip地址,總而言之這個localhost換成你docker所在服務器的宿主機ip地址準沒錯;

2.7 嘗試中止剛纔docker部署的項目

[root@svr01 docker]# docker ps -l
CONTAINER ID        IMAGE                           COMMAND                  CREATED             STATUS              PORTS                    NAMES
3a6393ce51b8        springms-simple-provider-user   "sh -c 'java $JAVA_OP"   8 minutes ago       Up 8 minutes        0.0.0.0:8000->8000/tcp   sick_shannon
[root@svr01 docker]# docker stop 3a6393ce51b8
3a6393ce51b8
[root@svr01 docker]# docker ps -l
CONTAINER ID        IMAGE                           COMMAND                  CREATED             STATUS                       PORTS               NAMES
3a6393ce51b8        springms-simple-provider-user   "sh -c 'java $JAVA_OP"   8 minutes ago       Exited (137) 3 seconds ago                       sick_shannon
[root@svr01 docker]#

2.8 小結

到此爲止,咱們已經將咱們打包好的一個鏡像成功部署了,而且能夠成功在瀏覽器訪問到輸出數據;

3、用docker部署一個基於Eureka服務治理髮現的項目

3.1 從 SpringCloudTutorial 中挑選項目

一、springms-discovery-eureka 
二、springms-provider-user
三、springms-consumer-movie-feign

3.2 依次對剛剛選出來的3個項目進行打包,併產生的文件以下,打包前記得將localhost的記得改成宿主機ip地址

一、springms-discovery-eureka-1.0-SNAPSHOT.jar
二、springms-provider-user-1.0-SNAPSHOT.jar
三、springms-consumer-movie-feign-1.0-SNAPSHOT.jar

3.3 在服務器上構建docker項目目錄

[root@svr01 ~]# cd /home/docker/
[root@svr01 docker]# mkdir -p springms-consumer-movie-feign springms-discovery-eureka springms-provider-user
[root@svr01 docker]# ll
total 3
drwxr-xr-x 2 root root   76 Dec 15 12:59 demo
drwxr-xr-x 2 root root   76 Dec 15 13:44 springms-consumer-movie-feign
drwxr-xr-x 2 root root   72 Dec 15 13:09 springms-discovery-eureka
drwxr-xr-x 2 root root   69 Dec 15 13:43 springms-provider-user
[root@svr01 docker]#

3.4 將步驟 3.2 的三個jar文件按照步驟 2.2 的方式上傳到對應服務器目錄去

sftp> cd /home/docker/springms-discovery-eureka
sftp> put D:\ANDROID\Code\Spring-Cloud\SpringCloudTutorial\springms-discovery-eureka\target\springms-discovery-eureka-1.0-SNAPSHOT.jar
Uploading springms-discovery-eureka-1.0-SNAPSHOT.jar to /home/docker/springms-discovery-eureka/springms-discovery-eureka-1.0-SNAPSHOT.jar
  100% 31595KB   1333KB/s 00:00:24     
D:/ANDROID/Code/Spring-Cloud/SpringCloudTutorial/springms-discovery-eureka/target/springms-discovery-eureka-1.0-SNAPSHOT.jar: 32776474 bytes transferred in 28 seconds (1383 KB/s)
sftp> 
sftp> 
sftp> 
sftp> cd /home/docker/springms-provider-user
sftp> put D:\ANDROID\Code\Spring-Cloud\SpringCloudTutorial\springms-provider-user\target\springms-provider-user-1.0-SNAPSHOT.jar
Uploading springms-discovery-eureka-1.0-SNAPSHOT.jar to /home/docker/springms-provider-user/springms-provider-user-1.0-SNAPSHOT.jar
  100% 31565KB   1333KB/s 00:00:24     
D:/ANDROID/Code/Spring-Cloud/SpringCloudTutorial/springms-provider-user/target/springms-provider-user-1.0-SNAPSHOT.jar: 32763789 bytes transferred in 27 seconds (1313 KB/s)
sftp> 
sftp> 
sftp> 
sftp> cd /home/docker/springms-consumer-movie-feign
sftp> put D:\ANDROID\Code\Spring-Cloud\SpringCloudTutorial\springms-consumer-movie-feign\target\springms-consumer-movie-feign-1.0-SNAPSHOT.jar
Uploading springms-discovery-eureka-1.0-SNAPSHOT.jar to /home/docker/springms-consumer-movie-feign/springms-consumer-movie-feign-1.0-SNAPSHOT.jar
  100% 32195KB   1333KB/s 00:00:24     
D:/ANDROID/Code/Spring-Cloud/SpringCloudTutorial/springms-consumer-movie-feign/target/springms-consumer-movie-feign-1.0-SNAPSHOT.jar: 32712375 bytes transferred in 25 seconds (1413 KB/s)

3.5 查看三個文件是否傳至服務器成功

[root@svr01 docker]# ll
total 4
drwxr-xr-x 2 root root   76 Dec 15 12:59 demo
drwxr-xr-x 2 root root   76 Dec 15 13:44 springms-consumer-movie-feign
drwxr-xr-x 2 root root   72 Dec 15 13:09 springms-discovery-eureka
drwxr-xr-x 2 root root   69 Dec 15 13:43 springms-provider-user
[root@svr01 docker]# ls springms-discovery-eureka/
springms-discovery-eureka-1.0-SNAPSHOT.jar
[root@svr01 docker]# ls springms-provider-user/
springms-provider-user-1.0-SNAPSHOT.jar
[root@svr01 docker]# ls springms-consumer-movie-feign/
springms-consumer-movie-feign-1.0-SNAPSHOT.jar
[root@svr01 docker]#

3.6 分別給3個模塊構建Dockfile文件

[root@svr01 ~]#  cd /home/docker/springms-discovery-eureka
[root@svr01 springms-discovery-eureka]#  vim Dockerfile
FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ADD springms-discovery-eureka-1.0-SNAPSHOT.jar app.jar
RUN sh -c 'touch /app.jar'
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]
保存Dockfile文件

[root@svr01 springms-discovery-eureka]#
[root@svr01 springms-discovery-eureka]# cd /home/docker/springms-provider-user
[root@svr01 springms-provider-user]#  vim Dockerfile
FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ADD springms-provider-user-1.0-SNAPSHOT.jar app.jar
RUN sh -c 'touch /app.jar'
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]
保存Dockfile文件

[root@svr01 springms-provider-user]# cd /home/docker/springms-consumer-movie-feign
[root@svr01 springms-consumer-movie-feign]# vim Dockerfile
FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ADD springms-consumer-movie-feign-1.0-SNAPSHOT.jar app.jar
RUN sh -c 'touch /app.jar'
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]
保存Dockfile文件

[root@svr01 springms-consumer-movie-feign]# cd ..
[root@svr01 docker]# ls springms-discovery-eureka/
Dockerfile  springms-discovery-eureka-1.0-SNAPSHOT.jar
[root@svr01 docker]# ls springms-provider-user/
Dockerfile  springms-provider-user-1.0-SNAPSHOT.jar
[root@svr01 docker]# ls springms-consumer-movie-feign/
Dockerfile  springms-consumer-movie-feign-1.0-SNAPSHOT.jar
[root@svr01 docker]#

3.7 分別對3個模塊進行鏡像構建

[root@svr01 docker]# cd springms-discovery-eureka
[root@svr01 springms-discovery-eureka]# docker build -t springms/discovery-eureka .
[root@svr01 springms-discovery-eureka]# cd ../springms-provider-user
[root@svr01 springms-provider-user]# docker build -t springms/provider-user .
[root@svr01 springms-provider-user]# cd ../springms-consumer-movie-feign
[root@svr01 springms-consumer-movie-feign]# docker build -t springms/consumer-movie-feign .
[root@svr01 springms-consumer-movie-feign]# cd ..
[root@svr01 docker]# docker images
REPOSITORY                                TAG                 IMAGE ID            CREATED             SIZE
springms/consumer-movie-feign           latest              f6e9ac5c27a7        19 hours ago        507.5 MB
springms/provider-user                  latest              d2b16dc2df77        19 hours ago        535.2 MB
springms/discovery-eureka                latest              f0f8555dcd0b        19 hours ago        517.1 MB

3.8 分別手動啓動3個模塊

[root@svr01 docker]# docker run -p 8761:8761 -t -d springms/discovery-eureka
[root@svr01 docker]# docker run -p 7900:7900 -t -d springms/provider-user
[root@svr01 docker]# docker run -p 7910:7910 -t -d springms/consumer-movie-feign

3.9 測試

一、首先進入eureka註冊中心:http://宿主機IP地址:8761,結果看到2個微服務已經註冊上來了,若還沒出現的話,稍微等待一下下;
二、測試 http://宿主機IP地址:7910/movie/4,結果能夠看到信息輸出;
三、說明上述相關的docker部署操做準確無誤,一切正常;

3.10 後續展望

既然上面提到了手動部署操做,那麼服務多的話,一個個手動部署,豈不是累死去啊,那麼在後續的章節中,陸續給你們講解採用docker服務編排部署操做;

4、下載地址

https://gitee.com/ylimhhmily/SpringCloudTutorial.gitlinux

SpringCloudTutorial交流QQ羣: 235322432git

SpringCloudTutorial交流微信羣: 微信溝通羣二維碼圖片連接spring

歡迎關注,您的確定是對我最大的支持!!!docker

相關文章
相關標籤/搜索