再見命令列!一鍵部署應用到遠端伺服器,IDEA官方Docker外掛真香!

語言: CN / TW / HK

Docker作為目前主流的容器技術,使用它部署應用是非常方便的!對於這款主流容器技術,IDEA官方自然也是有所支援的。最近體驗了一把IDEA官方提供的外掛,確實非常好用,今天我們以SpringBoot應用的打包部署為例,來聊聊IDEA官方Docker外掛的使用!

SpringBoot實戰電商專案mall(50k+star)地址:http://github.com/macrozheng/mall

外掛啟用

  • 由於該外掛為IDEA內建外掛,直接在外掛設定中啟用就好了;

  • 由於我們的Docker環境部署在遠端伺服器上,還需要配置下Docker的連線資訊,在Docker設定裡配置即可,看到連線成功提示後就表示配置正確了;

  • 接下來開啟IDEA底部的Services面板,雙擊Docker圖示進行連線,連線成功後就可以對遠端伺服器上的Docker容器和映象進行管理了。

映象管理

  • 點選Images按鈕,輸入需要下載的映象名稱和版本號就可以下載映象了,這裡IDEA還支援自動提示,實在太貼心了!

  • 右鍵指定映象開啟選單,我們還可以對其進行建立容器、檢視、刪除等常規操作;

  • 當然我們還可以使用Dockerfile來構建自己的映象,這裡以我的mall-tiny 腳手架專案為例,首先準備好Dockerfile指令碼;

```

該映象需要依賴的基礎映象

FROM java:8

將當前目錄下的jar包複製到docker容器的/目錄下

ADD ./mall-tiny-1.0.0-SNAPSHOT.jar /mall-tiny-1.0.0-SNAPSHOT.jar

宣告服務執行在8080埠

EXPOSE 8080

指定docker容器啟動時執行jar包

ENTRYPOINT ["java", "-jar","/mall-tiny-1.0.0-SNAPSHOT.jar"]

指定維護者的名字

MAINTAINER macrozheng ```

  • 然後開啟Dockfile檔案,點選左側按鈕選擇建立新的執行配置;

  • 接下來選擇我們配置好的遠端Docker服務,配置好應用打包目錄及映象名稱;

  • 然後選擇打包映象,控制檯將輸出如下日誌,jar包會直接上傳到遠端伺服器並打包成映象。

容器管理

  • 右鍵映象開啟選單,還可以直接建立容器;

  • 由於mall-tiny專案需要用到mysql和redis服務,我們可以先啟動它們;

  • 然後修改建立容器的配置,主要就是一些之前使用docker run命令的指定的一些配置;

  • 大家直接對照下之前使用的docker run命令,大概就能知道這些配置的作用了;

docker run -p 8080:8080 --name mall-tiny \ --link mysql:db \ --link redis:redis \ -e 'spring.profiles.active'=prod \ -v /etc/localtime:/etc/localtime \ -v /mydata/app/mall-tiny/logs:/var/logs \ -d mall-tiny/mall-tiny:1.0.0-SNAPSHOT

  • 執行過程中可以直接在Log標籤中檢視容器的執行日誌,這確實很方便!

與容器互動

  • 通過容器面板我們可以檢視到很多容器內部資訊,比如檢視環境變數;

  • 還可以檢視容器的埠對映配置;

  • 還可以檢視之前通過docker inspect命令獲取的資訊,比如檢視容器執行的IP地址;

  • 還可以直接進入容器內部去執行命令,還記得之前使用的docker exec -it命令麼。

Docker Compose 支援

  • 使用該外掛也可以通過Docker Compose來部署應用,首先建立docker-compose.yml檔案,由於mysql容器沒有使用Docker Compose來建立,這裡改用IP來訪問;

version: '3' services:   redis:     image: redis:5     container_name: redis-tiny     command: redis-server --appendonly yes     volumes:       - /mydata/redis-tiny/data:/data #資料檔案掛載     ports:       - 6379:6379   mall-tiny:     image: mall-tiny/mall-tiny:1.0.0-SNAPSHOT     container_name: mall-tiny     links:       - redis:redis     depends_on:       - redis     ports:       - 8080:8080     environment:       - 'spring.profiles.active=prod'       - 'spring.datasource.url=jdbc:mysql://192.168.3.105:3306/mall_tiny?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false'       - 'spring.redis.host=redis'     volumes:       - /etc/localtime:/etc/localtime       - /mydata/app/mall-tiny/logs:/var/logs

  • 然後直接點選docker-compose.yml檔案箭頭即可將應用部署到遠端伺服器,確實很方便!

  • 部署完成後即可訪問專案的Swagger頁面,訪問地址:http://192.168.3.105:8080/swagger-ui/

總結

今天體驗了一把IDEA的官方Docker外掛,不使用命令列就可以實現遠端Docker映象與容器的管理,還支援Docker Compose部署,功能確實很強大!在平時開發過程中,使用這款外掛來打包、部署、執行SpringBoot應用確實很方便,感興趣的小夥伴可以嘗試下它!

參考資料

官方文件:http://www.jetbrains.com/help/idea/docker.html

專案原始碼地址

http://github.com/macrozheng/mall-tiny

「其他文章」