1. 程式人生 > 實用技巧 >idea 開發SpringBoot專案並打包docker映象部署到節點上

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

來訪問。