Idea通過Docker插件部署Java應用
這裏挺多內容其實在其他人的博客中都安裝步驟和簡單介紹(說一不說二,估計都是複製粘貼),我這裏就簡單說一下,主要說其中的問題和解決方案
主要的流程,步驟
- 安裝docker
不多贅述了
- 開啓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
- 打開idea安裝docker插件
打開idea -> file -> settings -> Plugins -> 搜索docker -> 安裝即可
- 配置插件
- 配置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>
- 將Dockerfile文件放入項目根路徑下(和pom.xml同一級)即可,當使用mvn package(也可以改爲其他命令)時就會自動打包,並且生成鏡像(不會自動啓動容器,需要手動)
以上就是普通版本的配置,會有安全問題
起初我以爲是安全組未生效的問題,後來以爲是docker中redis的問題,分別進行了打補丁之後發現依然沒有解決問題,最後能出問題的只有docker本身了,因爲在未啓用遠程端口時並無此類問題,於是使用了遠程加密連接方案
- 首先使用openssl生成證書
網上有許多教程這裏就不多講了,只需要注意如果是IP訪問,下面要寫IP:否則寫DNS
echo subjectAltName = IP:123.123.123.123,IP:0.0.0.0 >> extfile.cnf
只掛一個官方的安全連接方案地址:超級無敵傳送門
- 修改上面第二步的配置
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
注意改爲自己剛剛生成證書的目錄,修改好記得重啓
- 到這裏很多教程就結束了,那麻煩你不要和Idea + maven插件放在一起說好嘛?
- 重新打開idea修改上面第4步的docker插件配置
改爲Https,並且將服務器上生成的證書拿到本地(只需要ca.pem,cert.pem,key.pem)放入一個文件夾中,然後按照圖片配置好文件夾路徑
- 到這裏很多教程就結束了,那麻煩你不要和Idea + maven插件放在一起說好嘛?
- 最後還需要兩個操作,第一步將上面存放證書的文件夾三個文件拷貝到項目路徑中(反正能找到就行),第二步加一個dockerCertPath標籤配置剛纔放三個文件的位置
<dockerHost>https://123.123.123.123:2376</dockerHost>
<dockerCertPath>${project.basedir}/src/main/resources</dockerCertPath>
- 到這裏纔算完全的配置完成整套安裝流程(撒花)
下面就可以開始愉快的使用環節
還不能撒花,在build image時候如果出現問題請檢查上述步驟是否有誤,檢查Dockerfile是否有問題等,如果連接有問題檢查2376端口是否被放開
我的idea是2019.3版本,打開services面板,配置一下各種啓動屬性(其實就是配置docker run xxxxx)
終於可以撒花了
總結一下
可以在idea面板內對docker進行一些操作,看到所有鏡像容器的配置,可以直接修改,能實時看到日誌,構建鏡像速度其實還是有點慢,運行容器的速度是很快的,如果項目和其他中間件等是docker部署可以考慮使用這種簡易的方案,還是挺方便的