当前位置: 首页 > news >正文

利用docker部署前后端分离项目

后端部署

数据库:

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(按你设置的端口映射来)

http://www.dtcms.com/a/276481.html

相关文章:

  • 【QT】多线程相关教程
  • Linux中使用快捷方式加速SSH访问
  • 通俗范畴论13 鸡与蛋的故事番外篇
  • 2D转换之缩放scale
  • 《P2052 [NOI2011] 道路修建》
  • JavaScript:移动端特效--从触屏事件到本地存储
  • (LeetCode 面试经典 150 题 )3. 无重复字符的最长子串 (哈希表+双指针)
  • 两数之和 https://leetcode.cn/problems/two-sum/description/
  • 基于hugo的静态博客站点部署
  • 苹果公司高ROE分析
  • Druid 连接池使用详解
  • 基于 SpringBoot+Uniapp 易丢丢失物招领微信小程序系统设计与实现
  • BugBug.io 使用全流程(202507)
  • Kubernetes持久卷实战
  • zcbus使用数据抽取相当数据量实况
  • 8. JVM类装载的执行过程
  • hive的索引
  • DBeaver连接MySQL8.0报错Public Key Retrieval is not allowed
  • C语言基础知识--位段
  • UE制作的 AI 交互数字人嵌入到 Vue 开发的信息系统中的方法和步骤
  • 【MaterialDesign】谷歌Material(Google Material Icons) 图标英文 对照一览表
  • AI问答:成为合格产品经理所需能力的综合总结
  • dify工作流1:快速上手ai应用
  • 计算机毕业设计Java停车场管理系统 基于Java的智能停车场管理系统开发 Java语言实现的停车场综合管理平台
  • 网络通信模型对比:OSI与TCP/IP参考模型解析
  • 《Java Web程序设计》实验报告三 使用DIV+CSS制作网站首页
  • ServiceNow Portal前端页面实战讲解
  • [案例八] NX二次开发长圆孔的实现(支持实体)
  • C++中Lambda表达式 [ ] 的写法
  • Redis面试精讲 Day 1:Redis核心特性与应用场景