后端部署
數據庫:
redis部署:
拉取鏡像:
doker pull redis
運行容器:
docker run -d -p 6379:6379 --name my_redis redis
?mysql部署:
拉取鏡像:
docker pull mysql
運行容器:我這里3306被占了就用的39001映射
docker run -d -p 39001:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql_01 mysql
?利用workbench測試連接并將要用到的數據庫表從本地數據庫導入
yml文件配置修改
1.將數據庫連接改為剛剛部署的,運行端口也可以按需更改
2.執行maven clean,再執行maven package 命令會生成target目錄,里面有一個jar包?
?
3.在服務器上找個好位置放你的jar包,我是在home目錄下創了/home/opt/dockerfiles目錄,然后在這里創一個backend目錄 mkdir backend,利用ftp將你的jar包上傳上去,利用xftp直接拖過去就可以
?4.然后創建Dockerfile文件開始構建鏡像
vim Dockerfile
Dockerfile文件如下,注意命令是大寫?
FROM openjdk:17-jdkLABEL maintainer="px<318155349@qq.com>" ADD *.jar app.jar
EXPOSE 39001
CMD ["java" , "-jar", "/app.jar"]
然后構建鏡像,執行下面指令
# 命令 docker build -f dockerfile文件路徑 -t 鏡像名:[tag]
root@iZbp1g3eaopeeodxj2dzqdZ:/home/opt/dockerfiles/backend# docker build -f Dockerfile -t sugarcane-backend .
利用構建的鏡像創建容器并運行
root@iZbp1g3eaopeeodxj2dzqdZ:/home/opt/dockerfiles/backend# docker run -d -p 39002:39001 --name backend sugarcane-backend
這個時候可以在瀏覽器訪問后端服務測試部署是否成功
前端部署?
這里采用nginx代理
nginx部署:
拉取鏡像:
docker pull nginx
首先要將nginx的默認配置復制一份到主機
# 創建宿主機目錄并自動填充默認配置
mkdir -p /usr/local/nginx/conf
docker run --rm nginx cat /etc/nginx/nginx.conf > /usr/local/nginx/conf/nginx.conf
?然后啟動容器并掛載數據卷
docker run -d --restart=always --privileged=true --name px_nginx -p 39003:80 \
-v /usr/local/nginx/cert:/etc/nginx/cert \
-v /usr/local/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /usr/local/nginx/html:/usr/share/nginx/html \
-v /usr/local/nginx/log:/var/log/nginx \
nginx
可以通過docker inspect px_nginx命令查看mounted下掛載的數據卷
?前端打包:
1.運行 npm run build 命令將前端打成dist
2.將dist上傳到宿主機 /usr/local/nginx/html下
跟前面后端jar包上傳一樣
3.修改nginx.conf配置文件
root@iZbp1g3eaopeeodxj2dzqdZ:/usr/local/nginx/conf# vim nginx.conf
?修改后的conf文件如下:
需要注意的是如下規則,按你項目需求選擇
http://backend:39001/ | 剝離?location ?匹配的前綴,將剩余部分追加到代理地址后 | 代理到?http://backend:39001/user |
http://backend:39001 | 保留?location ?匹配的前綴,完整路徑追加到代理地址后 | 代理到?http://backend:39001/api/user |
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;include /etc/nginx/conf.d/*.conf;server {listen 80;//容器內的端口server_name 121.40.170.98//服務器地址charset utf-8;location / {root /usr/share/nginx/html/dist; #前端工程存放路徑,注意這里的路徑是容器內的,不是宿主機的try_files $uri $uri/ /index.html;index index.html index.htm;}location /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://121.40.170.98:39002; # 后端項目的發布地址加端口}location /auth {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://121.40.170.98:39002; # 后端項目的發布地址加端口}}
}
4.重啟nginx容器使配置生效
root@iZbp1g3eaopeeodxj2dzqdZ:/usr/local/nginx/conf# docker restart px_nginx
然后就可以訪問39003(按你設置的端口映射來)