使用docker部署若依前后端分離項目全過程
前言
由于之前做若依的二次開發(fā)項目,項目完成之后想部署到云服務器,折騰了好久才部署成功,所以總結下來,希望能幫到大家。
這里是使用docker進行部署的,如果想用別的方式部署,就需要友友網上再找找了。
這里做個規(guī)定:下面說到使用零件的意思就是使用下面我給出的資料,在對應資料有說明,友友要記得看,修改成自己的項目情況。
一、搭建后端
1.1 搭建流程:
首先需要把后端項目需要的程序先搭建好,如 mysql,redis(使用零件)
創(chuàng)建網橋(推薦根據項目命名),把mysql,redis和nginx(后面前端布置,現在先不用)放在一起
打包后端項目(后端項目的mysql和redis對應配置文件記得修改,如果放在一個網橋里面,可以使用網橋名稱 )。

在云服務器里面單獨開一個文件夾(推薦使用項目相關名稱命名),把后端項目上傳到文件夾里面.(優(yōu)點:便于管理)
在文件夾里面創(chuàng)建Dockerfile文件,填入對應零件內容(使用零件)

構建鏡像(使用零件)
創(chuàng)建后端容器(使用零件)
1.2 后端零件:
1.2.1 mysql容器創(chuàng)建:
這里設置的mysql密碼為123,有需要的友友自己修改一下。
docker run -d \ --name mysql \ -p 3306:3306 \ -e TZ=Asia/Shanghai \ -e MYSQL_ROOT_PASSWORD=123 \ -v ./mysql/data:/var/lib/mysql \ -v ./mysql/conf:/etc/mysql/conf.d \ -v ./mysql/init:/docker-entrypoint-initdb.d \ mysql
1.2.2 redis容器創(chuàng)建:
這里設置的redis密碼為123456,有需要的友友自己修改一下。
docker run -d \ --name redis \ -p 6379:6379 \ -e REDIS_PASSWORD=123456 \ redis:latest \
1.2.3 Dockerfile內容:
openjdk 是jdk的版本,這里使用的是jdk11,如果想使用其它版本可以自己改,一般直接用11也是可以的。
這里需要修改的就是xxx部分,修改成自己后端項目的名稱,其它的不用改。
# 基礎鏡像 FROM openjdk:11.0-jre-buster # 設定時區(qū) ENV TZ=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone # 拷貝jar包 COPY xxxxx.jar /app.jar # 入口 ENTRYPOINT ["java", "-jar", "/app.jar"]
1.2.4 構建項目鏡像:
注意:構建鏡像需要看完下面的解釋之后再進行操作,一定一定。
docker build -t 鏡像名稱 .
.表示Dockerfile文件路徑就在當前路徑。例如下圖:自己在 root/dkd 中,Dockerfile 文件也在 root/dkd 中就可以使用.。鏡像名稱無所謂,最好其和項目有關的。
后端項目需要放在和Dockerfile相同的文件夾里面。
基本和下圖一樣(項目名稱不一樣),除了 mysql,mysql 不需要創(chuàng)建在哪里(那里是錯誤的),mysql的數據我們使用客戶端工具連上自己加。

1.2.5 創(chuàng)建后端容器:
docker run -d \ --name 容器名(自己指定) \ -p 8080:8080 \ --network 網橋名 \ 鏡像名(前面構建的)
二、前端搭建:
2.1 搭建流程:
- nginx 容器創(chuàng)建(使用零件),記得放到網橋里面。
- 打包前端項目,生成 dist 文件(前端項目所在位置)。
下圖為如何打包

下圖為 dist 所在文件夾(在項目文件夾里面):

- 把 dist 里面的所有內容拷貝到
/var/lib/docker/volumes/html/_data目錄里面

- 修改
/var/lib/docker/volumes/conf/_data/文件夾里面的 nginx.conf 文件(直接貼零件,稍加修改)。

- 最后不要忘記要重啟 nginx 容器刷新配置。
2.2 前端零件:
不一定都會用到。
2.2.1 nginx 容器創(chuàng)建:
一般不用改。
docker run -d --name nginx -p 80:80 -v html:/usr/share/nginx/html -v conf:/etc/nginx nginx
2.2.2 nginx.conf 文件:
注意:下面有些要修改成自己項目的。
user root;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name 159.75.xxx.145(記得切換);
location / {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ /index.html; #防止刷新報404
# try_files $uri $uri/ /index.html;
}
# location /prod-api/{
# proxy_set_header Host $http_host;ls
# 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://159.75.xxx.145:8080/;
# }
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://dkd-project(記得切換):8080/;
}
location /dev-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://dkd-project(記得切換):8080/;
}
}
include /etc/nginx/conf.d/*.conf;
}2.2.3 nginx html 數據卷所在位置:
/var/lib/docker/volumes/html/_data
2.2.4 nginx conf 數據卷所在位置:
/var/lib/docker/volumes/conf/_data/
三、總結
3.1 后端:
最好要把后端項目分成開發(fā)和上線兩個部分(打包的時候記得切換到上線部分)。
只要把mysql(數據要有)和redis先搭建好,后端自己制作鏡像創(chuàng)建容器即可,注意點就是,項目訪問mysql和redis是通過網橋來訪問的,好處可以少開放一點端口,加快訪問速度。
后端構建鏡像需要Dockerfile文件。
3.2 前端:
首先創(chuàng)建nginx容器(要把conf和html文件,掛載出來)。
前端項目基本不用動。
把dist里面的文件放入html/_data里面。
配置conf文件。
最后要把nginx放到網橋里面。
總結
到此這篇關于使用docker部署若依前后端分離項目的文章就介紹到這了,更多相關docker部署若依前后端分離內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Docker Desktop啟動失敗的解決(Docker failed to i
本文主要介紹了Docker Desktop啟動失敗的解決(Docker failed to initialize Docker Desktop is shutting down),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03
docker/docker desktop for window環(huán)境下創(chuàng)建本地鏡像倉庫方式
這篇文章主要介紹了docker/docker desktop for window環(huán)境下創(chuàng)建本地鏡像倉庫方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-03-03

