docker-compose部署springboot項目


因為本人最近玩過用docker-compose部署項目的經歷,所以就簡單介紹下自己研究出來的經驗。首先用docker-compose部署項目,要先擁有一個docker環境,一個springboot項目,本人用的的在window10下的子系統Ubuntu中安裝的docker,裝好docker后還要安裝docker-compose,這里不介紹docker及docker-compose的安裝,可自行百度,很簡單的。springboot項目就不用說了,可用idea工具創建一個項目。

        准備工作完了,說說docker-compose部署項目需要的文件:docker-compose .yml、Dockerfile,

        Dockerfile的作用是根據一系列命令及springboot項目jar包生成鏡像;

        docker-compose.yml能夠根據已存在的鏡像及官方規定的關鍵字命令生成所需要的容器,docker-compose.yml中配置的每個容器都可以作為一個服務,可以被別的服務引用,docker-compose.yml文件有三個版本,在這里我用的是三。

本次實例中saas項目服務就依賴到了redis服務、mysql服務,下面是本人實際開發中寫的兩個文件的樣板,僅供參考,想了解更多可以查看官方文檔。

1、docker-compose.yml配置文件介紹:

version: "3"
services:
 #指定服務名稱
 mysql:
   #指定服務使用的鏡像
   image: mysql:5.7
   #指定容器名稱
   container_name: saasmysql
   restart: always
   #指定服務運行的端口
   ports :
     "3306:3306"
   #指定容器的環境變量
   environment:
#數據庫密碼
     MYSQL_ROOT_PASSWORD=123456
       #創建的庫
     MYSQL_DATABASE=saas
    #允許多IP連接數據庫
     MYSQL_ROOT_HOST=%  
 redis:
   image: redis
   #指定容器名稱
   container_name: saasredis
   ports:
     "6379:6379"
 #指定服務名稱
 saas:
鏡像名:版本
image: saas:v1
   container_name: saas
   #restart: always
   #指定服務運行的端口
   ports:
     "10083:10083"
   #啟動時,要覆蓋的環境變量配置
   environment:
  #數據庫IP
     DATABASE_HOST=mysql
     #數據庫用戶名
     DATABASE_USER=root
     #數據庫密碼
     DATABASE_PASSWORD=123456
     #初始化的數據庫
     DATABASE_NAME=saas
     #數據庫端口
     DATABASE_PORT=3306
     #redis的IP
     REDIS_HOST=redis
     #redis的端口
     REDIS_PORT=6379
   #依賴的服務
   depends_on:
     mysql
     redis

2、部署步驟

創建兩個文件夾:例如創建saas文件夾,mkdir saas,進入saas文件夾:cd saas,然后創建saasapp文件,mkdir saasapp;

saas文件夾中中的內容:

saasapp文件夾的內容:

Dockerfile文件為制作項目鏡像的配置文件,saas-be-0.0.1-SNAPSHOT.jar為項目打包后的jar包

Dockerfile文件內容:

FROM java:8
ADD saas-be-0.0.1-SNAPSHOT.jar app.jar
RUN bash -'touch /app.jar'
EXPOSE "10083"
ENTRYPOINT sleep 60 && java -Dspring.profiles.active=prod -Dspring.datasource.hostname=$DATABASE_HOST:$DATABASE_PORT -Dspring.datasource.username=$DATABASE_USER -Dspring.datasource.password=$DATABASE_PASSWORD -Dspring.redis.host=$REDIS_HOST -Dspring.redis.port=$REDIS_PORT -Djava.security.egd=file:/dev/./urandom -jar /app.jar

文件准備好后,在saasapp目錄下執行

docker build -saas:v1 .

生成名字為saas,版本號為v1的項目鏡像,通過

docker images

可查看生成的鏡像

然后在saas目錄下執行

docker-compose up

生成並運轉docker-compose.yml配置的容器

運行成功后,項目也就運行正常,在saas目錄下執行

docker-compose ps

可發現有三個運行的容器

停止且刪除容器:執行docker-compose down

版本升級時:需重新上傳jar包到saas/saasapp下,在saasapp下執行

docker build -t saas:v2 .

生成新版本的鏡像,然后在saas目錄下執行

vi docker-compose.yml

編輯docker-compose.yml文件,點擊 i 即可開始更改操作,修改圖中的選項

更改為

image: saas:v2

點擊 esc,然后shift+: 輸入wq,回車即更改成功,再執行  

docker-compose up

版本2即部署成功

在這說一下可能遇到的坑,如果你按照我上面寫的部署項目,啟動時可能會項目連接數據庫被拒絕,這個情況可以修改下Dockerfile文件中的

可以把這個值改70或者80,大一點,這個好像跟服務器的性能有關,具體原因暫時沒找到,以上是我用docker-compose部署的玩法,瑕疵肯定會有的,不足的地方請多指正,有問題的也可以咨詢我,一起學習啦...


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM