天天看點

2分鐘學會Docker部署SpringBoot項目

文章目錄

  • ​​一、安裝docker​​
  • ​​1. 線上安裝docker​​
  • ​​2. 換鏡像源​​
  • ​​二、安裝redis​​
  • ​​三、安裝mysql​​
  • ​​四、安裝RabbitMq​​
  • ​​五、安裝ElasticSearch​​
  • ​​5.1. 修改伺服器配置​​
  • ​​5.2. 建立容器并啟動 ES​​
  • ​​5.3. 檢視啟動日志​​
  • ​​5.4. 進入鏡像​​
  • ​​5.5. 修改cluster-name​​
  • ​​5.6. 安裝中文分詞插件​​
  • ​​5.7. 退出并重新開機鏡像​​
  • ​​5.8. 檢視啟動日志​​
  • ​​六、建構eblog的docker鏡像​​
  • ​​6.1. 克隆項目到本地​​
  • ​​6.2.下載下傳maven依賴​​
  • ​​6.3. 修改yml配置和本地運作​​
  • ​​6.4. 采用容器别名通信​​
  • ​​6.5. 跳過測試打包​​
  • ​​6.6. 上傳jar包​​
  • ​​6.7. 制作Dockerfile​​
  • ​​6.8. 制作eblog鏡像​​
  • ​​6.9. 檢視鏡像清單​​
  • ​​七、啟動eblog項目​​
  • ​​7.1. 容器運作狀态檢視​​
  • ​​7.2. 修改websoket位址​​
  • ​​7.3. 啟動eblog​​
  • ​​7.4. 檢視eblog列印日志​​
  • ​​7.5. 浏覽器驗證​​
一、安裝docker

1. 線上安裝docker

#安裝
yum install docker

#檢驗安裝是否成功
[root@localhost opt]# docker --version
Docker version 1.13.1, build 7f2769b/1.13.1      
2分鐘學會Docker部署SpringBoot項目

2. 換鏡像源

sudo vim /etc/docker/daemon.json
内容如下:
{
 "registry-mirrors": ["https://m9r2r2uj.mirror.aliyuncs.com"]
}
儲存退出,重新開機docker

#重新開機
sudo systemctl daemon-reload
sudo      

具體位址擷取方式:

​​​Centos7 解決Docker拉取鏡像慢的問題​​

二、安裝redis

首先上dockerHub搜尋redis,點選進入詳情頁之後,拉到下面就可以看到how to use,如果需要選擇特定的版本,有Supported tags給我們選擇,然後如果拉取最新的版本的話,拉倒下面就教程。

​​​https://hub.docker.com/_/redis​​

2分鐘學會Docker部署SpringBoot項目
#拉取redis的鏡像
docker pull redis
#檢視本地redis鏡像
docker images
#運作redis
docker run --name myredis -p 6379:6379 -d redis redis-server --appendonly yes      
  • docker run表示運作的意思
  • –name myredis 表示起個名字叫myredis
  • -p 6379:6379表示把伺服器的6379映射到docker的6379端口,這樣就可以通過伺服器的端口通路docker的端口
  • -d 表示以背景服務形式運作redis
  • redis redis-server --appendonly yes表示開啟持久化緩存模式,可以存到硬碟
2分鐘學會Docker部署SpringBoot項目
三、安裝mysql

如果想下載下傳指定版本的mysql鏡像請一部官網選擇版本

​​​https://hub.docker.com/_/mysql​​

2分鐘學會Docker部署SpringBoot項目
2分鐘學會Docker部署SpringBoot項目
docker pull mysql:5.7.27
docker run --name mymysql -e MYSQL_ROOT_PASSWORD=admin -d -p 3306:3306  mysql:5.7.27      
  • MYSQL_ROOT_PASSWORD=admin表示root的初始密碼
  • mysql:5.7.27表示操作的是mysql的5.7.27版本,沒有後面的版本号的話,預設是拉取最新版本的mysql。

連上mysql,建立資料庫​

​eblog​

​,然後把資料庫腳本導入進去。 腳本位置:

​​https://github.com/MarkerHub/eblog/blob/master/eblog.sql​​

2分鐘學會Docker部署SpringBoot項目
2分鐘學會Docker部署SpringBoot項目

如果遇到異常,請移步

​​1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contai​​

四、安裝RabbitMq
docker run -d --hostname my-rabbit --name myrabbit -e RABBITMQ_DEFAULT_USER=root -e RABBITMQ_DEFAULT_PASS=admin -p 15672:15672 -p 5672:5672 rabbitmq:management      
  • 指定hostname為my-rabbit : --hostname my-rabbit
  • 建立使用者 : -e RABBITMQ_DEFAULT_USER
  • 設定密碼: -e RABBITMQ_DEFAULT_PASS
  • 可視化視窗版本 : rabbitmq:management
  • 端口映射:-p 5672:5672

一行指令搞定,注意RABBITMQ_DEFAULT_PASS=password是設定密碼

2分鐘學會Docker部署SpringBoot項目
2分鐘學會Docker部署SpringBoot項目
五、安裝ElasticSearch

docker 安裝 Elasticsearch6.4.3版本 及中文插件安裝。

系統配置

不配置的話,可能會啟動失敗

具體報錯:max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]。

解決:

5.1. 修改伺服器配置

sudo sysctl -w vm.max_map_count=262144      
2分鐘學會Docker部署SpringBoot項目

5.2. 建立容器并啟動 ES

docker run -p 9200:9200 -p 9300:9300 -d --name es_643 elasticsearch:6.4.3      
2分鐘學會Docker部署SpringBoot項目

5.3. 檢視啟動日志

docker logs -f es_643      
2分鐘學會Docker部署SpringBoot項目

5.4. 進入鏡像

docker exec      

5.5. 修改cluster-name

es配置檔案位置: ​

​/usr/share/elasticsearch/config/elasticsearch.yml​

# 修改cluster-name保持和eblog程式yml配置檔案一緻,如果不需要,可以不改
vi      
2分鐘學會Docker部署SpringBoot項目
2分鐘學會Docker部署SpringBoot項目
2分鐘學會Docker部署SpringBoot項目

5.6. 安裝中文分詞插件

./bin/elasticsearch-plugin install      
2分鐘學會Docker部署SpringBoot項目

5.7. 退出并重新開機鏡像

# 退出
exit

# 重新開機es_643容器      
2分鐘學會Docker部署SpringBoot項目

5.8. 檢視啟動日志

2分鐘學會Docker部署SpringBoot項目
六、建構eblog的docker鏡像
前提:mysql、redis、RabbitMq、elasticsearch容器都處于啟動狀态
2分鐘學會Docker部署SpringBoot項目

6.1. 克隆項目到本地

git      

或者直接下載下傳zip包

​​​https://github.com/MarkerHub/eblog/archive/refs/heads/master.zip​​

6.2.下載下傳maven依賴

2分鐘學會Docker部署SpringBoot項目

6.3. 修改yml配置和本地運作

将mysql、redis、RabbitMq、elasticsearch 位址連結、名稱、使用者、密碼等資訊位址修改為容器資訊

2分鐘學會Docker部署SpringBoot項目
2分鐘學會Docker部署SpringBoot項目
2分鐘學會Docker部署SpringBoot項目
2分鐘學會Docker部署SpringBoot項目

看到以上截圖,說明服務都部署成功!

6.4. 采用容器别名通信

為了保證容器内部之間可以通信,是以,采用給容器起别名方式±-link參數
調整前 調整後 說明
192.168.223.128 emysql mysql位址
192.168.223.128 eredis redis位址
192.168.223.128 ees elasticsearch位址
192.168.223.128 erabbit rabbit位址

如下圖所示:

2分鐘學會Docker部署SpringBoot項目

6.5. 跳過測試打包

cd D:\vue\eblog-master
mvn clean package -Dmaven.test.skip=true      
2分鐘學會Docker部署SpringBoot項目
2分鐘學會Docker部署SpringBoot項目

6.6. 上傳jar包

2分鐘學會Docker部署SpringBoot項目

6.7. 制作Dockerfile

cd /app
vim      
# Docker image for springboot file run
# VERSION 1.0.0
# Author: gblfy
FROM java:8
EXPOSE 8080
MAINTAINER gblfy <[email protected]>
ENV TZ=Asia/Shanghai
RUN ln -sf /usr/share/zoneinfo/{TZ} /etc/localtime && echo '{TZ}' > /etc/timezone
ADD eblog-0.0.1-SNAPSHOT.jar /app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]      
2分鐘學會Docker部署SpringBoot項目

注:jar包需要和Dockerfile在同一級目錄

FROM java:8 表示基于jdk8環境

EXPOSE 8080 表示對外暴露的端口是8080

  • VOLUME /tmp 表示挂載到/tmp目錄
  • ADD eblog-0.0.1-SNAPSHOT.jar /app.jar 表示把jar包複制到鏡像服務裡面的根目錄,并改名稱app.jar
  • RUN bash -c ‘touch /app.jar’ 表示執行建立app.jar
  • ENTRYPOINT [“java”,"-jar","/app.jar"] 表示執行啟動指令java -jar

6.8. 制作eblog鏡像

接下來,我們安裝Dockrfile的指令,把eblog-0.0.1-SNAPSHOT.jar建構成docker的鏡像。

cd /app

# 建構鏡像,注意後面有個點哈
docker build -t eblog .      
2分鐘學會Docker部署SpringBoot項目

注:Dockerfile檔案内容可以自定義

制作鏡像也添加添加版本資訊

docker build -t eblog:1.0 .      

操作記錄:

[root@localhost app]# 
[root@localhost app]# docker build -t eblog:1.0 .
Sending build context to Docker daemon  73.7 MB
Step 1/8 : FROM java:8
 ---> d23bdf5b1b1b
Step 2/8 : EXPOSE 8080
 ---> Using cache
 ---> e91404d45de4
Step 3/8 : MAINTAINER gblfy <[email protected]>
 ---> Running in 5b79b4ead8e2
 ---> 0e711f0534b6
Removing intermediate container 5b79b4ead8e2
Step 4/8 : ENV TZ Asia/Shanghai
 ---> Running in e23d8325cc54
 ---> c9eba2cd377e
Removing intermediate container e23d8325cc54
Step 5/8 : RUN ln -sf /usr/share/zoneinfo/{TZ} /etc/localtime && echo '{TZ}' > /etc/timezone
 ---> Running in 4b82ff8fab7c

 ---> 3ea55048b889
Removing intermediate container 4b82ff8fab7c
Step 6/8 : ADD eblog-0.0.1-SNAPSHOT.jar /app.jar
 ---> d6d02fb42305
Removing intermediate container c95686e0b3dc
Step 7/8 : RUN bash -c 'touch /app.jar'
 ---> Running in ea7e06619867

 ---> 60f8478bc78b
Removing intermediate container ea7e06619867
Step 8/8 : ENTRYPOINT java -Djava.security.egd=file:/dev/./urandom -jar /app.jar
 ---> Running in 0a92b68b6034
 ---> 9394516f581d
Removing intermediate container 0a92b68b6034
Successfully built 9394516f581d
[root@localhost app]#      

6.9. 檢視鏡像清單

docker images      
2分鐘學會Docker部署SpringBoot項目

複制代碼這步驟完成之後,我們就可以在準備工作就已經完成啦,接下來,我們就直接啟動我們的項目哈。

七、啟動eblog項目
前提:mysql、redis、RabbitMq、elasticsearch容器都處于啟動狀态

7.1. 容器運作狀态檢視

2分鐘學會Docker部署SpringBoot項目

7.2. 修改websoket位址

​static/res/js/im.js​

2分鐘學會Docker部署SpringBoot項目

7.3. 啟動eblog

因為eblog容器需要調用mysql/redis/rabbit/es_643容器服務,相當于跨容器通信,是以,采用–link方式
docker run -p 8080:8080 -p 9326:9326 --name eblog --link es_643:ees --link myrabbit:erabbit --link mymysql:emysql --link myredis:eredis -d eblog:1.0      
  • -p 8080:8080 -p 9326:9326 :9326是因為即時聊天需要用到的ws端口
  • –link es:ees 表示關聯容器,把容器es起别名為ees,前面是容器,後面是别名(别名在eblog容器中的yml已經配置)
  • 2分鐘學會Docker部署SpringBoot項目

7.4. 檢視eblog列印日志

docker logs -f eblog      
2分鐘學會Docker部署SpringBoot項目

7.5. 浏覽器驗證

​​http://192.168.223.128:8080/​​

2分鐘學會Docker部署SpringBoot項目