Docker 二:IDEA + Docker 外掛建立映象並執行 spring boot 專案
IDEA 上提供了 Docker integration 外掛,可以很方便的管理映象和容器,當然這些操作通過命令列也能完成,使用 IDEA 外掛方式的另一個便利在於 IDEA 提供了 Docker 配套的 Configuration,可以一次性定義好操作序列,修改程式碼或資源後只需 Run/Debug Configuration 即可。
接下來直接通過示例專案介紹這些操作。
專案結構
- 閘道器專案:gateway
- pigeon RPC 服務專案:service-1
- pigeon RPC 服務專案:service-2
三個專案都為 spring boot 專案,pigeon 使用 zookeeper 做為註冊中心,因此需要部署 zookeeper,此外還有 redis。
建立並執行 zookeeper 和 redis 的映象
不確定 Docker Hub 倉庫中是否存在映象時可使用 docker search redis
進行檢索。
docker pull zookeeper
docker run -p 127.0.0.1:2181:2181 --name zookeeper -d zookeeper:latest
docker pull redis
docker run -p 127.0.0.1:6379:6379 --name redis -d redis:latest
Dockfile 檔案編寫
gateway 專案藉助 maven 打成 war 包,兩個 RPC 服務最終打成 jar 包。
pigeon 服務的 Dockerfile 檔案
FROM frolvlad/alpine-oraclejdk8:slim
COPY target/service-1-1.0.0.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
- FROM 指定當前映象基於哪一個映象源
- COPY 指定在 build 時將 Dockerfile 所在目錄下的
target/service-1-1.0.0.jar
拷貝到映象跟目錄(型別 linux 檔案目錄)下,並重命名為 app.jar - ENTRYPOINT 指定映象容器啟動後執行命令
java -jar /app.jar
gateway 專案的 Dockfile 檔案
FROM frolvlad/alpine-oraclejdk8:slim
COPY target/gateway-1-1.0.0.war appwjar
ENTRYPOINT ["java","-jar","/app.war"]
之後建立映象時需要根據這三份檔案進行建立。這裡需要注意 gateway 專案的 pom 檔案需要新增 `` 外掛,否則 docker 中 java -jar /app.war
執行 war 包時會出錯(提示沒有“主清單屬性”)。
docker build
建立映象
執行 docker build
命令需要進入 Dockfile 所在目錄,直接執行 docker build -t service-1:0.0.1 .
,也可以指定 Dockerfile 絕對路徑(資料夾層級即可)的方式進行構建:
docker build -t rh-service:0.0.1 G:/workspaces/work/service-1
命令執行成功後 IDEA 的 Docker 面板就會看到建立成功的映象了。
docker run
建立並執行容器
docker run -p 127.0.0.1:8081:8081 --name service-1 -d service-1:0.0.1 java -jar /app.jar
docker run -p 127.0.0.1:9091:9091 --name service -2-d service-2:0.0.1 java -jar /app.jar
這兩個為 pigeon 服務,閘道器專案藉助 zookeeper 與其進行 RPC 通訊,所以這裡埠也可以隨機對映到主機的高位埠:
docker run -P --name service-1 -d service-1:0.0.1 java -jar /app.jar
docker run -P --name service-2 -d service-2:0.0.1 java -jar /app.jar
閘道器專案需要外部進行訪問,所以需要對映到主機的指定埠上:
docker run -p 127.0.0.1:8082:8082 --name gateway -d gateway:0.0.1 java -jar /app.war
藉助 IDEA Configuration 一鍵執行專案
在 IDEA 中使用 Edit Configurations
建立 Docker 配置 。
選擇 Dockerfile
進行如下配置
Dockerfile:
處選擇自己的 Dockerfile 所在位置,Context folder
將會自動填充;image tag
一般由兩部分構成:REPOSITORY:TAG(參考 docker ps
命令顯示的列表標題);勾選 Run build image
,這樣 Run/Debug
時在執行了 docker build
命令後,會繼續執行 docker run
命令; Executable->Command
指定容器啟動後執行命令;Bind ports
配置埠對映,Run options
可新增 -d
使容器在後臺執行。
- 注意在 Before lanuch 中配置
mvn install
,使用 maven 構建 jar(war) 包,這樣docker build
執行時使用的才會是最新的target/service-1-1.0.0.jar
檔案 Command previce
中可以看到當前配置將依次執行命令docker build
和docker run
- 當點選 IDEA 的
Run/Debug