Idea通過Docker插件部署java應用(看這一篇就夠了)

Idea通過Docker插件部署Java應用

這裏挺多內容其實在其他人的博客中都安裝步驟和簡單介紹(說一不說二,估計都是複製粘貼),我這裏就簡單說一下,主要說其中的問題和解決方案

主要的流程,步驟

  1. 安裝docker

不多贅述了

  1. 開啓docker遠程端口

網上絕大部分介紹就是直接加上 -H tcp:0.0.0.0:2376 就完事了,確實好用,也確實有問題,分分鐘成爲別人礦機,就算你啓用了安全組也可以直接連接,可以再另外一臺裝有docker的機器上嘗試連接
docker -H tcp://123.123.123.123:2376 ps

   vi /usr/lib/systemd/system/docker.service
   //修改爲下面這段
   ExecStart =/usr/bin/dockerd -H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock
  1. 打開idea安裝docker插件

打開idea -> file -> settings -> Plugins -> 搜索docker -> 安裝即可

  1. 配置插件

在這裏插入圖片描述

  1. 配置pom.xml

添加docker-maven-plugin 這個很簡單網上很有多可以搜素一下(複製粘貼的)

<plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>1.0.0</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>${project.artifactId}</imageName>
                    <!--指定標籤 這裏指定的是鏡像的版本,我們默認版本是latest-->
                    <imageTags>
                        <imageTag>latest</imageTag>
                    </imageTags>
                    <!-- 指定我們項目中Dockerfile文件的路徑-->
                    <dockerDirectory>${project.basedir}/src/main/resources</dockerDirectory>

                    <!--指定遠程docker 地址-->
                    <dockerHost>http://123.123.123.123:2376</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>
  1. 將Dockerfile文件放入項目根路徑下(和pom.xml同一級)即可,當使用mvn package(也可以改爲其他命令)時就會自動打包,並且生成鏡像(不會自動啓動容器,需要手動

以上就是普通版本的配置,會有安全問題

起初我以爲是安全組未生效的問題,後來以爲是docker中redis的問題,分別進行了打補丁之後發現依然沒有解決問題,最後能出問題的只有docker本身了,因爲在未啓用遠程端口時並無此類問題,於是使用了遠程加密連接方案

  1. 首先使用openssl生成證書

網上有許多教程這裏就不多講了,只需要注意如果是IP訪問,下面要寫IP:否則寫DNS
echo subjectAltName = IP:123.123.123.123,IP:0.0.0.0 >> extfile.cnf
只掛一個官方的安全連接方案地址:超級無敵傳送門

  1. 修改上面第二步的配置

ExecStart=/usr/bin/dockerd --tlsverify --tlscacert=/etc/docker/ca.pem --tlscert=/etc/docker/server-cert.pem --tlskey=/etc/docker/server-key.
pem -H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock
注意改爲自己剛剛生成證書的目錄,修改好記得重啓

  1. 到這裏很多教程就結束了,那麻煩你不要和Idea + maven插件放在一起說好嘛?
  2. 重新打開idea修改上面第4步的docker插件配置

改爲Https,並且將服務器上生成的證書拿到本地(只需要ca.pem,cert.pem,key.pem)放入一個文件夾中,然後按照圖片配置好文件夾路徑在這裏插入圖片描述

  1. 到這裏很多教程就結束了,那麻煩你不要和Idea + maven插件放在一起說好嘛?
  2. 最後還需要兩個操作,第一步將上面存放證書的文件夾三個文件拷貝到項目路徑中(反正能找到就行),第二步加一個dockerCertPath標籤配置剛纔放三個文件的位置
  <dockerHost>https://123.123.123.123:2376</dockerHost>
  <dockerCertPath>${project.basedir}/src/main/resources</dockerCertPath>
  1. 到這裏纔算完全的配置完成整套安裝流程(撒花)

下面就可以開始愉快的使用環節

還不能撒花,在build image時候如果出現問題請檢查上述步驟是否有誤,檢查Dockerfile是否有問題等,如果連接有問題檢查2376端口是否被放開

我的idea是2019.3版本,打開services面板,配置一下各種啓動屬性(其實就是配置docker run xxxxx)
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
終於可以撒花了

總結一下

可以在idea面板內對docker進行一些操作,看到所有鏡像容器的配置,可以直接修改,能實時看到日誌,構建鏡像速度其實還是有點慢,運行容器的速度是很快的,如果項目和其他中間件等是docker部署可以考慮使用這種簡易的方案,還是挺方便的

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