1.項目背景:
本項目作為小商場系統,涵蓋內容如下:
litemall = Spring Boot后端 + Vue管理員前端 + 微信小程序用戶前端 + Vue用戶移動端
1.1項目架構:
1.2項目技術棧:
本項目可以使用window運行jar包本地部署,也可以實現服務器直接打包部署,也可以實現docker打鏡像部署運行。本篇主要介紹如何在docker上打鏡像部署,docker鏡像部署有點有很多,最主要的一點還是對環境和架構要求較少,可以直接使用自己開發時定義的版本。那么話不多說直接開始介紹。
2.Docker部署
2.1準備環境
首先我們需要安裝docker以及docker-compose 這些步驟我就不多贅述,網上很多教程,新手小白可以跳轉下面連接邊安裝邊學習:docker安裝詳細介紹
本項目除了配置文件的服務,還需要安裝mysql,如果安裝過拉取過mysql鏡像則可以直接把docker-compose的mysql拉取配置刪除即可 (像我這樣):
2.2 項目打包
1. 在服務器或者開發機打包項目到docker;
cd litemallcat ./litemall-db/sql/litemall_schema.sql > ./docker/db/init-sql/litemall.sqlcat ./litemall-db/sql/litemall_table.sql >> ./docker/db/init-sql/litemall.sqlcat ./litemall-db/sql/litemall_data.sql >> ./docker/db/init-sql/litemall.sqlcd ./litemall-adminnpm install --registry=https://registry.npm.taobao.orgnpm run build:depcd ..mvn clean packagecp -f ./litemall-all/target/litemall-all-*-exec.jar ./docker/litemall/litemall.jar
這里的工作是:
把數據庫文件拷貝到docker/db文件夾
修改litemall文件夾下面的*.yml外部配置文件,當litemall-all模塊啟動時會 加載外部配置文件,而覆蓋默認jar包內部的配置文件。 例如,配置文件中一些地方需要設置成遠程服務器的IP地址
編譯litemall-admin項目
編譯litemall-all模塊,同時把litemall-admin編譯得到的靜態文件拷貝到 litemall-all模塊的static目錄(因為我是直接通過sftp上傳的dist包,所以這里沒有給出,大家自己把打好的dist包上傳到服務器就行)
此時docker部署包結構如下:
- bin:
存放遠程服務器運行的腳本,包括deploy.sh腳本和reset.sh腳本 - db:
存放litemall數據庫文件 - litemall:
存放遠程服務器運行的代碼,包括litemall-all二進制可執行包和litemall外部配置文件 - util:
存放開發服務器運行的腳本,包括package.sh腳本和lazy.sh腳本。 由于是本地開發服務器運行,因此開發者可以不用上傳到遠程服務器。 - docker-compose.yml:
docker-compose配置腳本,運行docker-compose命令會
2. 打一個本地鏡像以便生產環境部署(更穩定安全)
首先進到docker文件夾
由于我的Dockerfile在litemall文件夾里存放,所以打鏡像命令要這樣寫:
docker bulidx build -t litemall:1.0.0 ./litemall
打成鏡像如下
litemal-front代表前端鏡像,后面就不在重復寫了。
docker-compose文件配置如下:
version: '3'
services:litemall:image: litemall:1.0.0 #使用已經打好的鏡像container_name: litemallports:- "8080:8080"volumes:- ./litemall/storage:/storage- ./litemall/logs:/logs- ./litemall/backup:/backup- /etc/localtime:/etc/localtimeenvironment:- TZ=Asia/Shanghairestart: always #自啟動
2.3啟動:
docker compose up -d
查看成功如下:
到這里后端服務已經部署好了,接下來是前端服務,我通過nginx代理,然后再把nginx打到鏡像啟動。
3.Nginx代理前端
3.1 Nginx安裝
這里還是不提供安裝方法,提供鏈接如下:Nginx安裝實戰
3.2 上傳dist包
默認在/usr/share/nginx/html,后面配置文件路徑要保持一致
3.3 Nginx配置
如果通過yum安裝nginx,默認在/etc/nginx/nginx.conf配置,主要是替換代理server:
server {listen 80;server_name 192.168.136.160;# 管理后臺:訪問 http://ip/admin/ location /admin {alias /usr/share/nginx/html/admin/dist;index index.html;try_files $uri $uri/ /index.html;}# 商城前端:訪問 http://ip/shop/ location /shop {alias /usr/share/nginx/html/shop/dist;index index.html;try_files $uri $uri/ /index.html;}# 后端接口轉發:訪問 http://ip/api/... location /api/ {proxy_pass http://192.168.136.160:8080/;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;}error_page 404 =200 /admin/index.html;}
這時啟動nginx已經可以訪問
systemctl start nginx
接下來使用docker compose up -d
打到鏡像中
訪問http:/ip/shop如下:
訪問http:/ip/admin如下:
至此已經完成,但是項目仍有一點小bug,應該是我自己的問題,如下:
正在跟進中,如果有大佬懂這個問題,可以幫幫我,謝謝。祝大家每日都好運,每天都進步,加油!