場景
若依前后端分離版手把手教你本地搭建環境并運行專案:
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/108465662
在上面搭建起來SpringBoot+Vue前后端分離的專案后,如果要進行專案部署的話,
可以通過nginx部署前端代碼并進行介面機請求映射,后臺jar包單獨啟動,redis和mysql都要安裝,具體流程可以參照下面
若依前后端分離版本,Windows下使用Nginx代理的方式進行部署(全流程,圖文教程):
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/108120070
如果要求用Docker鏡像的方式怎樣部署,
注:
博客:
https://blog.csdn.net/badao_liumang_qizhi
關注公眾號
霸道的程式猿
獲取編程相關電子書、教程推送與免費下載,
實作
這里使用Dockerfile定制鏡像的方式,
將redis和mysql使用單獨的鏡像,并在運行容器時指定密碼,
將后臺jar包基于jdk定制化鏡像,
將前端dist包基于nginx定制化鏡項,
1、docker中部署redis
CenOS7中使用Docker安裝配置Redis(資料持久化與資料卷映射):
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/119823807
這里設定的其密碼是123456,則在SpringBoot中連接redis的密碼也是對應的123456
然后將系統對應的sql檔案匯入進入資料庫即可,可以使用Navicat等工具連接后匯入sql,
2、docker中部署mysql
Docker中部署mysql資料庫:
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/99213563
需要注意的是這里在運行容器時要額外設定其忽略大小寫,不然在jar包中連接資料庫
后會提示找不到表,而此表是已經存在的,
解決方式:
啟動時加上命令
--lower_case_table_names=1
完整命令
docker run -p 3306:3306 --name mysql -v /usr/local/docker/mysql/conf:/etc/mysql -v /usr/local/docker/mysql/logs:/var/log/mysql -v /usr/local/docker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 --lower_case_table_names=1
3、Dockfile定制帶jar包的鏡像
此jar包打包時設定的redis和mysql的地址都是localhost
然后密碼都是對應的運行容器時的密碼,
CentOS7中使用Dockerfile部署后臺jar包:
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/119818808
基于上面實作定制化帶jar包的鏡像,

注意兩點:
一是Docker中使用Dockerfile定制化jar啟動時:at sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1264):
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/120204615
要注意若依中登錄頁面時訪問驗證碼時會提示這個錯誤,
一個是如果直接按照上面博客中啟動的話,jar包里面請求連接redis和mysql的地址都是localhost時會找不到該地址,
需要在運行時給其指定網路
Docker使用了Linux的Namespaces技術來進行資源隔離,如PID Namespace隔離行程,Mount Namespace隔離檔案系統,
Network Namespace隔離網路等,一個Network Namespace提供了一份獨立的網路環境,包括網卡、路由、Iptable規則等都與其他的Network Namespace隔離,
host模式類似于Vmware的橋接模式,與宿主機在同一個網路中,但沒有獨立IP地址,一個Docker容器一般會分配一個獨立的Network Namespace,
但如果啟動容器的時候使用host模式,那么這個容器將不會獲得一個獨立的Network Namespace,而是和宿主機共用一個Network Namespace,
容器將不會虛擬出自己的網卡,配置自己的IP等,而是使用宿主機的IP和埠,
運行時指定網路為host
docker run -d -p 7777:7777 --net=host badaoserver
這里的7777就是SpringBoot指定的后臺埠
4、Dockerfile定制基于nginx的前端鏡像
CentOS中使用Docker+nginx部署Vue打包的dist專案:
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/119839732
基于上面將前端專案打成dist包,nginx的核心修改配置如下
?
server {
listen 100;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
location /prod-api/ {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:7777/;
}
?
其中100是前端專案指定的埠,
需要注意的是在啟動nginx容器時也要指定網路
docker run -d -p 100:100 --net=host badaofont
5、查看效果
將所有容器啟動后將服務器上100埠開放
firewall-cmd --add-port=100/tcp --permanent
firewall-cmd --reload
然后直接訪問ip:100查看部署效果

如果有問題可以查看jar包的鏡像的運行日志,這里是正常啟動的

為了單獨驗證后臺jar包是否啟動成功,可以開放后臺7777埠并單獨訪問驗證碼介面進行驗證

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/298911.html
標籤:其他
