Spring Boot應用的Docker化

頭條上看到一個權限管理系統的介紹,今天原本想研究一下,clone代碼後發現工程自帶了Dockfile和docker-compose.yml, 因而研究了一下Spring Boot工程的Docker化。以renren-admin工程爲例,要將一個Spring Boot工程Docker化,須要的操做有:java

1)新建一個Dockfile在工程的根目錄下:mysql

內容如:git

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包。spring

3)打開Docker Quickstart Terminal,進入renren-admin的根目錄,經過build命令生成鏡像。sql

docker build --tag=renren/admin .

4)查看imagedocker

docker image ls

5)啓動數據庫

docker run -d -p 8080:8080 renren/admin

6)查看containerapi

docker container ls

7)因爲鏈接本地的mysql服務器,經過Docker啓動Spring Boot應用會在一個虛擬機中,爲使鏈接成立,有兩種方式:bash

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
相關文章
相關標籤/搜索