Docker for Windows部署Spring Boot maven項目

1.pom.xml添加Docker依賴

    <properties>
        <docker.image.prefix>ramer</docker.image.prefix>
    </properties>
    <plugin>
       <groupId>com.spotify</groupId>
           <artifactId>docker-maven-plugin</artifactId>
           <version>0.4.11</version>
           <configuration>
           <imageName>${docker.image.prefix}/${project.artifactId}</imageName>
               <dockerDirectory>src/main/docker</dockerDirectory>
                 <resources>
                    <resource>
                       <targetPath>/</targetPath>
                       <directory>${project.build.directory}</directory>
                       <include>${project.build.finalName}.jar</include>
                    </resource>
                  </resources>
            </configuration>
     </plugin>

注意:在添加docker插件時,可能會出現安裝不了的情況,這是因爲 com.spotify插件沒在maven白名單中,在setting.xml文件中添加:

 <pluginGroups>
    <pluginGroup>com.spotify</pluginGroup>
  </pluginGroups>

2.容器化應用

在項目目錄src/main下新建文件夾,創建Dockerfile文件(該文件沒有後綴): src/main/docker/Dockerfile,內容如下

FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD home-page-interface-0.0.1-SNAPSHOT.jar app.jar
EXPOSE 9090
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

Dockerfile文件語法說明

FROM:

指定了當前鏡像繼承的基礎鏡像。

文件中:表示使用 Jdk8 環境 爲基礎鏡像,如果鏡像不是本地的會從 DockerHub 進行下載。

VOLUME: 

創建一個可以從本地主機或其他容器掛載的掛載點,一般用來存放數據庫和需要保持的數據等。

Volume設置指令,使容器中的一個目錄具有持久化存儲數據的功能,該目錄可以被容器本身使用,也可以共享給其他容器使用。我們知道容器使用的是AUFS,這種文件系統不能持久化數據,當容器關閉後,所有的更改都會丟失。當容器中的應用有持久化數據的需求時可以在Dockerfile中使用該指令。

ADD:

從當前工作目錄複製文件到鏡像目錄中去。

EXPOSE: 

EXPOSE指令是聲明運行時容器提供服務端口,這只是一個聲明,在運行時並不會因爲這個聲明應用就會開啓這個端口的服務。在Dockerfile中寫入這樣的聲明有兩個好處,一個是幫助鏡像使用者理解這個鏡像服務的守護端口,以方便配置映射;另一個用處則是在運行時使用隨機端口映射時,也就是docker run -P時,會自動隨機映射EXPOSE的端口。

要將EXPOSE和在運行時使用-p <宿主端口>:<容器端口>區分開來。-p,是映射宿主端口和容器端口,換句話說,就是將容器的對應端口服務公開給外界訪問,而EXPOSE僅僅是聲明容器打算使用什麼端口而已,並不會自動在宿主進行端口映射。

ENTRYPOINT: 

配置容器啓動時自動執行的命令。

這裏:爲了縮短 Tomcat 的啓動時間,添加java.security.egd的系統屬性指向/dev/urandom作爲 ENTRYPOINT。

3. 創建docker鏡像

在cmd.exe中進入自己項目的目錄:執行mvn package -Dmaven.test.skip=true docker:build

這裏要確保已經將maven添加到path環境變量中,並且已經開啓docker。

4. 運行docker容器

docker run --name=docker-demo -p 9090:9090 -t ramer/demo

運行後,會在cmd.exe中出現標誌性的springboot啓動標誌,表示啓動完成。此時可以在瀏覽器等訪問項目。

5. 啓動/關閉/重啓/刪除docker容器

cmd: docker start/stop/restart/rm CONTAINER_ID/NAME 
其中: 
CONTAINER_ID: 是容器id,執行 docker ps 可查看 
NAME: 是容器的名稱,也就是docker run –name後面的名字
 

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