docker運行eureka服務註冊中心

前言

Docker作爲一個容器無論在生產環境還是開發環境,真的是讓小編愛不釋手,使用以前電腦放在家裏用來做自己的私人服務器使用docker技術安裝各種不同的服務真的是爽歪歪。本文通過介紹在docker中運行eureka服務註冊中心項目來跟大家介紹一下docker運行spring cloud工程。

一、編寫一個eureka服務註冊中心並測試運行

1、編輯pom文件

在idea中創建一天eureka註冊中心的項目,編輯pom文件。

首先,加入eureka註冊中心依賴

<dependencies>
    <!--eureka服務端依賴-->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
    </dependency>
</dependencies>

如果在idea中運行eureka註冊中心只添加上面依賴就可以了,如果要把項目使用docker容器中運行就需要將項目打成jar包,在編輯dockerfile文件構建成docker鏡像文件,所以需要加入spring-boot-maven-plugin項目,用maven工具將maven打包成jar包,否則打包成jar包後找不到main函數。

<build>
     <plugins>
         <!--添加maven-plugin項目.使用maven將項目打包成jar包-->
         <plugin>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-maven-plugin</artifactId>
         </plugin>
     </plugins>
</build>

2、編輯eureka註冊中心項目

編輯完pom註冊中心之後,就可以正常編輯eureka註冊中心的業務邏輯,這裏不是本文重點,本文就不再贅述了。

3、打包eureka註冊中心項目並運行

編輯完項目後可以使用maven工具的package命令,或者使用idea中的maven插件將項目打包,並使用java -jar命令測試運行。

二、構建docker鏡像運行項目

1、使用docker命令構建運行eureka註冊中心項目

1)編輯docker file文件

編輯docker file文件可以分爲以下幾個步驟:

  • 指定基礎鏡像

  • 添加鏡像作者

  • 將可執行jar包添加到基礎鏡像的跟目錄下

  • 暴露項目網絡端口

  • 在基礎鏡像上中運行,即在基礎鏡像中執行的命令

    這裏需要注意的是,第三個參數需要和ADD命令中的第二個參數相同,因爲在ADD命令中已講可執行jar包添加到名稱爲第二個參數的容器鏡像中,所以二者需要相同,否則構建是還報找不到可執行jar包的錯誤。

# 指定基礎鏡像
FROM java:8
# 作者
MAINTAINER Strive to Positive Energy
# 把可執行jar包複製到基礎鏡像的跟目錄下
ADD eureka3200-1.0-SNAPSHOT.jar /eureka3200.jar
# 鏡像要暴露端口,如果需要使用端口,在執行run命令時使用-p命令映射
EXPOSE 3200
# 在鏡像運行,爲容器後期執行的命令
ENTRYPOINT ["java","-jar","/eureka3200.jar"]

2)構建docker鏡像

DockerFile文件和可執行jar包導入Linux系統,DockerFile文件中ADD命令可中執行jar沒有寫文件路徑,默認與DockerFile在同一路徑下,如果不在同一路徑下需要在jar文件名前添加文件所在路徑。

使用docker build命令構建docker鏡像:

docker build -t s2pe/eureka:v1.0 .

參數介紹:

  • -t 爲指定鏡像名字和TAG

  • . 爲當前目錄,這裏實際上是一個剩下文路徑

構建結果:

Sending build context to Docker daemon 45.18 MB
Step 1/5 : FROM java:8
 ---> d23bdf5b1b1b
Step 2/5 : MAINTAINER Strive to Positive Energy
 ---> Using cache
 ---> f5df4502e2b6
Step 3/5 : ADD eureka3200-1.0-SNAPSHOT.jar /eureka3200.jar
 ---> 20674a1a56c2
Removing intermediate container 55cf687bec5b
Step 4/5 : EXPOSE 3200
 ---> Running in 57e304e6fa6f
 ---> d0b85c07eddb
Removing intermediate container 57e304e6fa6f
Step 5/5 : ENTRYPOINT java -jar /eureka3200.jar
 ---> Running in 3c876154a91f
 ---> 828a05073472
Removing intermediate container 3c876154a91f
Successfully built 828a05073472

3)運行構建的docker鏡像

運行構建的docker鏡像,訪問docker容器:

docker run -d --name eureka -p 3200:3200 s2pe/eureka:v1.0

訪問結果:
訪問結果

2、使用Intellij IDEA中Docker插件構建運行eureka註冊中心項目

1)準備工作

使用Intellij IDEA中的Docker插件也可以構建運行,首先需要在docker主機中配置遠程訪問docker,在idea中安裝Docker插件,並連接docker宿主機。

2)配置運行環境

從Run->Edit Configrations進入配置頁面,需要配飾信息和注意點如下:

  • Name

    運行環境名稱,在idea中運行環境的名稱,這裏可以任意取名

  • Server

    選擇已經配置好的docker宿主機。

  • DockerFile

    docker file文件

  • Context folder

    上下文配置文件夾,這裏指的是docker file文件上下文路徑,上文的Docker文件中沒有指定jar包的文件路徑,所以這裏的上下文配置文件夾需要配置成可執行jar包生成的文件夾。利用maven插件默認將jar生成在工程目錄下的target文件夾下,所以Context folder應該寫到target文件夾。

  • Image tag

    docker鏡像名稱和TAG,對應docker build命令中的-t屬性

  • Run build image

    勾選這個屬性,構建鏡像時先構建可執行jar包

  • Container name

    容器名稱。

  • Publish expose ports to the host interfaces

    選的暴露端口形式,因爲該進程值暴露一個端口,所以選擇Specifiy,在Bind ports中現在暴露的端口。

  • Bind ports

    暴露端口,相當於docker run命令中的-p命令

  • Command preview

    可以查看構建和運行命令。

  • Active tool windows

    勾選工具欄窗口,可以看到構建運行中的日誌。
    配置

3)運行配置查看結果

運行日誌:

Deploying 'eureka Dockerfile: eureka3200/src/main/Dockerfile'...
Building image...
Preparing build context archive...
[==================================================>]10/10 files
Done

Sending build context to Docker daemon...
[==================================================>] 40.13MB
Done

Step 1/6 : FROM java:8
 ---> d23bdf5b1b1b
Step 2/6 : MAINTAINER Strive to Positive Energy
 ---> Running in 061f13264587
 ---> c9354e37b10d
Removing intermediate container 061f13264587
Step 3/6 : VOLUME /tmp
 ---> Running in 5967c64716b3
 ---> e917c8ebde82
Removing intermediate container 5967c64716b3
Step 4/6 : COPY /eureka3200-1.0-SNAPSHOT.jar /eureka3200.jar
 ---> 6a4c4cfd3d1f
Removing intermediate container 742e61aa7fbc
Step 5/6 : EXPOSE 3200
 ---> Running in 6c3ed881c55e
 ---> 4bbe1580bd8f
Removing intermediate container 6c3ed881c55e
Step 6/6 : ENTRYPOINT java -jar /eureka3200.jar
 ---> Running in 63a7dd42d0d9
 ---> f6a87bcd6d6d
Removing intermediate container 63a7dd42d0d9
Successfully built f6a87bcd6d6d
Creating container...
Container Id: 8677558291e0b4426dc7344a021e5438591555127374d34ecd5d0f1676c61962
Container name: 'eureka'
Attaching to container 'eureka'...
Starting container 'eureka'
'eureka Dockerfile: eureka3200/src/main/Dockerfile' has been deployed successfully.

在日誌中可以看到構建運行的每個步驟,如果有錯誤可以在此查找。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章