Spring Boot應用的Docker化
阿新 • • 發佈:2019-04-16
頭條上看到一個許可權管理系統的介紹,今天本來想研究一下,clone程式碼後發現工程自帶了Dockfile和docker-compose.yml, 於是研究了一下Spring Boot工程的Docker化。以renren-admin工程為例,要將一個Spring Boot工程Docker化,需要的操作有:
1)新建一個Dockfile在工程的根目錄下:
內容如:
FROM java:8 EXPOSE 8080 VOLUME /tmp ADD target/renren-admin.jar app.jar RUN bash -c 'touch /app.jar' ENTRYPOINT ["java","-jar","/app.jar"]
2)通過mvn clean install生成jar包。
3)開啟Docker Quickstart Terminal,進入renren-admin的根目錄,通過build命令生成映象。
docker build --tag=renren/admin .
4)檢視image
docker image ls
5)啟動
docker run -d -p 8080:8080 renren/admin
6)檢視container
docker container ls
7)由於連線本地的mysql伺服器,通過Docker啟動Spring Boot應用會在一個虛擬機器中,為使連線成立,有兩種方式:
a:資料庫url配置使用localhost,Docker啟動帶上引數 --net=host(該方法實驗中不可行)
docker run --net=host -d -p 8080:8080 renren/admin
b: 資料庫url配置使用ip地址。
8)renren-api的docker化和服務啟動可參考上述1)-7)步。
9)通過docker-compose.yml叢集化部署:
可先通過docker container stop <conainerId>的方式停止renren-admin,renren-api服務。
docker-compose.yml的內容如下:
version: '3' services: renren-admin: image: renren/admin ports: - "8080:8080" environment: - spring.profiles.active=dev renren-api: image: renren/api ports: - "8081:8081" environment: - spring.profiles.active=dev
在deploy之前,確保renren/admin和renren/api兩個image已build,確保有一個可用的swarm(可通過docker swarm init --advertise-addr=192.168.99.100生成一個swarm),然後:
docker stack deploy -c docker-compose.yml renren