1. 程式人生 > 實用技巧 >idea集合docker實現映象打包一鍵部署

idea集合docker實現映象打包一鍵部署

一.伺服器安裝docker

yum install docker

修改配置檔案,開啟2375埠

  1. [root@microservice ~]# vim /usr/lib/systemd/system/docker.service
  2. 在ExecStart=/usr/bin/dockerd-current 後面加上-H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock \
  3. 重新載入配置檔案和啟動:
  4. systemctl daemon-reload
  5. systemctl start docker
  6. 附:docker操作相關命令
  7. systemctl命令是系統服務管理器指令,它是 service 和 chkconfig 兩個命令組合。
  8. 啟動docker:systemctl start docker
  9. 停止docker:systemctl stop docker
  10. 重啟docker:systemctl restart docker
  11. 檢視docker狀態:systemctl status docker
  12. 開機啟動:systemctl enable docker
  13. 更詳細的請參考:https://blog.csdn.net/linxiyimeng007/article/details/81080223

二、Idea安裝docker支援外掛及配置

1.idea下載docker支援外掛:Docker integration

(快捷鍵Crtl+shift+A 搜尋Docker integration ,然後啟用,重啟idea生效)

2.IDEA Docker外掛配置

File–>Settings–>Build,Execution,Deployment–>Docker–>進行如下配置:

tcp://伺服器ip地址:2375

注意:只要下面提示Connection successfl 就表示連線成功了;

3.配置pom檔案:

  1. <build>
  2. <finalName>${project.artifactId}</finalName>
  3. <plugins>
  4. <plugin>
  5. <groupId>org.springframework.boot</groupId>
  6. <artifactId>spring-boot-maven-plugin</artifactId>
  7. <configuration>
  8. <fork>true</fork>
  9. </configuration>
  10. </plugin>
  11. <!-- 跳過單元測試 -->
  12. <plugin>
  13. <groupId>org.apache.maven.plugins</groupId>
  14. <artifactId>maven-surefire-plugin</artifactId>
  15. <configuration>
  16. <skipTests>true</skipTests>
  17. </configuration>
  18. </plugin>
  19. <!--使用docker-maven-plugin外掛-->
  20. <plugin>
  21. <groupId>com.spotify</groupId>
  22. <artifactId>docker-maven-plugin</artifactId>
  23. <version>1.0.0</version>
  24. <!--將外掛繫結在某個phase執行-->
  25. <executions>
  26. <execution>
  27. <id>build-image</id>
  28. <!--使用者只需執行mvn package ,就會自動執行mvn docker:build-->
  29. <phase>package</phase>
  30. <goals>
  31. <goal>build</goal>
  32. </goals>
  33. </execution>
  34. </executions>
  35. <configuration>
  36. <!--指定生成的映象名-->
  37. <imageName>fred/${project.artifactId}</imageName>
  38. <!--指定標籤-->
  39. <imageTags>
  40. <imageTag>latest</imageTag>
  41. </imageTags>
  42. <!-- 指定 Dockerfile 路徑-->
  43. <dockerDirectory>src/main/docker</dockerDirectory>
  44. <!--指定遠端 docker api地址-->
  45. <dockerHost>http://伺服器ip地址:2375</dockerHost>
  46. <!-- 這裡是複製 jar 包到 docker 容器指定目錄配置 -->
  47. <resources>
  48. <resource>
  49. <targetPath>/</targetPath>
  50. <!--jar 包所在的路徑 此處配置的 即對應 target 目錄-->
  51. <directory>${project.build.directory}</directory>
  52. <!-- 需要包含的 jar包 ,這裡對應的是 Dockerfile中新增的檔名 -->
  53. <include>${project.build.finalName}.jar</include>
  54. </resource>
  55. </resources>
  56. </configuration>
  57. </plugin>
  58. </plugins>
  59. </build>

附專案目錄結構:

四、根目錄下編寫Dockerfile

  1. # Dockerfile
  2. # 基於的映象
  3. FROM openjdk:8-jdk-alpine
  4. VOLUME /opt/tmp
  5. ADD sg-business.jar app.jar
  6. # -Djava.security.egd=file:/dev/./urandom 可解決tomcat可能啟動慢的問題
  7. # 具體可檢視:https://www.cnblogs.com/mightyvincent/p/7685310.html
  8. ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
  9. # 對外埠
  10. EXPOSE 8081

五、點選maven的package進行構建

構建成功的資訊

六、點選最下面的docker到docker介面,雙擊docker連上伺服器docker會顯示出伺服器上的docker映象,找到剛剛生成的映象(圖中2),點選建立容器

7.配置docker 容器對外暴露埠和專案介面埠,然後run啟動容器

最後,設定好後,啟動容器,啟動成功後去阿里雲檢視是否啟動成功

IDEA啟動,開啟專案很慢很卡?正確配置記憶體讓IDEA起飛

用IDEA開發專案,預設情況下記憶體會分配比較小,所以開啟程式或者開啟稍微大一點的專案速度就會比較慢。我們可以修改idea的相關配置,來加速程式啟動和專案載入速度。

idea安裝以後的預設配置如下:

預設值設定太小,跑稍微大點的專案或者微服務多模組專案就會出現卡的情況

我的記憶體是16g的,所以我可以給idea分配大一點的記憶體,配置如下:

這個引數根據個人電腦記憶體的大小合適的配置,大了小了都不好,找個合適的進行配置

個人建議8g記憶體配置:

  1. -Xms512m
  2. -Xmx1024m
  3. -XX:ReservedCodeCacheSize=512m
  4. -XX:+UseConcMarkSweepGC
  5. -XX:SoftRefLRUPolicyMSPerMB=50
  6. -ea
  7. -Dsun.io.useCanonCaches=false
  8. -Djava.net.preferIPv4Stack=true
  9. -XX:+HeapDumpOnOutOfMemoryError
  10. -XX:-OmitStackTraceInFastThrow

16g記憶體配置:

  1. -Xms1024m
  2. -Xmx2048m
  3. -XX:ReservedCodeCacheSize=1024m
  4. -XX:+UseConcMarkSweepGC
  5. -XX:SoftRefLRUPolicyMSPerMB=50
  6. -ea
  7. -Dsun.io.useCanonCaches=false
  8. -Djava.net.preferIPv4Stack=true
  9. -XX:+HeapDumpOnOutOfMemoryError
  10. -XX:-OmitStackTraceInFastThrow