idea 開發SpringBoot專案並打包docker映象部署到節點上
先決條件:
a. idea已經安裝了docker外掛。
b. 有一臺已經安裝好docker環境的伺服器,並且
否則的話,需要修改docker的配置,允許遠端連線(以centos7下的yum方式安裝的docker且使用service方式執行為例):
vi /usr/lib/systemd/system/docker.service
確保:ExecStart 的後面有: -H tcp://0.0.0.0:2375
修改完成後儲存退出,重新整理並重啟docker服務:
systemctl daemon-reload
systemctl restart docker
c. 在idea中新增你的docker執行的伺服器:
idea, File, Settings, Build Extention Deployment 選單下找到Docker選單,
點加號新建,名稱自定義,然後選擇tcp:
填寫你伺服器的配置即可,我此處使用的是:tcp://172.171.19.241:2375
然後儲存即可,如果連結成功,會有提示,在程式碼頁面的service面板中有docker的狀態,當前伺服器中的容器、映象等資訊。
如果連線失敗,請檢查你的伺服器和網路環境是否放開了2375這個埠。
放行埠的命令(CentOS7):
firewall-cmd --permanent --add-port=2375/tcp
firewall-cmd --reload
到這裡,準備工作基本完畢。
操作步驟:
1.新建SpringBoot專案。
2.編寫測試用介面。
2.1修改pom.xml
build 一節替換成如下:
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> <!--使用docker-maven-plugin外掛--> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>1.2.2</version> <!--將外掛繫結在某個phase執行--> <executions> <execution> <id>build-image</id> <!--將外掛繫結在package這個phase上。也就是說,使用者只需執行mvn package ,就會自動執行mvn docker:build--> <phase>package</phase> <goals> <goal>build</goal> </goals> </execution> </executions> <configuration> <!--指定生成的映象名,前面的那個名字你隨便改,後面的引用,不能動--> <imageName>dz/${project.artifactId}</imageName> <!--指定標籤,也就是版本號,可以自定義--> <imageTags> <imageTag>0.1</imageTag> </imageTags> <!-- 指定 Dockerfile 路徑--> <dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory> <!--指定遠端 docker api地址 也就是伺服器ip+docker的埠號--> <dockerHost>http://172.171.19.241:2375</dockerHost> <!-- 這裡是複製 jar 包到 docker 容器指定目錄配置 --> <resources> <resource> <targetPath>/</targetPath> <!--jar 包所在的路徑 此處配置的 即對應 target 目錄--> <directory>${project.build.directory}</directory> <!-- 需要包含的 jar包 ,這裡對應的是 Dockerfile中新增的檔名 --> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration> </plugin> </plugins> </build>
3.在專案的“src\main” 目錄下新建 docker目錄並新建檔案:Dockerfile
輸入下列內容:
#基礎映象 FROM java:8-jre #SpringBoot專案必須使用/tmp目錄 VOLUME /tmp #將專案的jar包拷貝並命名 COPY hellodocker-0.0.1-SNAPSHOT.jar hellodocker.jar RUN bash -c "touch /hellodocker.jar" #暴露的埠 EXPOSE 8082 #執行命令執行專案 ENTRYPOINT ["java","-jar","hellodocker.jar"] #解決時間不正確的問題 RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ && echo 'Asia/Shanghai' >/etc/timezone \
4.編譯專案打包專案並打包映象
mvn clean package docker:build
執行成功後,就可以在伺服器中看到有此映象存在了:
[root@dockerdz app]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE dz/hellodocker 0.1 a70b918b24c2 49 minutes ago 348MB dz/hellodocker latest a70b918b24c2 49 minutes ago 348MB <none> <none> 29e8182007d4 52 minutes ago 123MB hello-world latest bf756fb1ae65 9 months ago 13.3kB openjdk 8-jdk-alpine a3562aa0b991 17 months ago 105MB java 8-jre e44d62cf8862 3 years ago 311MB
5.使用生成的映象建立容器並執行
可以使用idea中的service面板來建立,在你新增的伺服器名字下面有images,在你的映象上右鍵,即可建立container了。
注意需要新增容器和宿主機的埠對映,我這裡使用了8082埠(宿主機同樣需要放行8082埠)。
執行成功後,即可在本機測試訪問docker中的專案了。
此處使用:
http://172.171.19.241:8082/api/hi?name=sixi
來訪問。