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

使用docker部署springboot、Vue分离项目,部署到主路径

这几天写了一个小的应用,牵涉到了使用docker部署问题,中间遇到了一些小问题,此处记录下,为以后遇到类似的问题提供一些解决思路。
1、准备使用的镜像:mysql、redis、nginx、jdk。
镜像地址:

docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/nginx:1.27.3
docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/vulhub/java:8u261-jdk
docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/mysql:8.0.39
docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/redis:6.2.7

具体的mysql、redis的安装不再赘述,见其他相关文章:
常用docker应用部署

2、打包后端的代码为jar文件文件名为:

QualityChecker-0.0.1-SNAPSHOT.jar

3、后端创建镜像及运行:
Dockerfile

FROM swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/vulhub/java:8u261-jdk
RUN mkdir /app
COPY ./QualityChecker-0.0.1-SNAPSHOT.jar /app
RUN export JAVA_HOME=/opt/java
RUN export PATH=.:$PATH:/opt/java/bin
ENV   PATH=/opt/java/bin:$PATH
ENTRYPOINT ["java","-jar","/app/QualityChecker-0.0.1-SNAPSHOT.jar"]

镜像创建:

docker build -t qualitychecker-api:0.1 .

运行:

docker run -p 8086:8086 -d --name web-api qualitychecker-api:0.1

通过地址即可访问,http://ip:8086。
4、前端编译:
yarn的话一般来用:

yarn build

可能需要修改的内容,在工程中的vite.config.js中:
export default defineConfig({
中可能需要增加:

  base: '/', // Add this line for relative paths

之后会得到dist目录,一般来讲就可以把dist进行打包,上传到服务器或者docker所在的服务器,如我这里上传到/myweb/src/QualityChecker
5、前端打包:
可以将dist解包后,放入/myweb/src/QualityChecker中。
因为我想将前端放到web服务器的根路径下,所以用如下的方法:

nginx.conf的内容如下:

# 全局配置块
worker_processes 4;
# 事件配置块
events {
    worker_connections 1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    access_log /var/log/nginx/access.log;
    server {
        listen       80;
        server_name  localhost;
     
        location / {
            root   /var/www/html;
            index  index.html index.htm;
            try_files $uri $uri/ /index.html;
        }
     
        location /api/ {
            proxy_read_timeout 100s;
            proxy_pass http://172.20.94.32:8086/;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }  
    }
}

注意:
①172那个地址是我的后端地址。
②/api/和http://172.20.94.32:8086/必须同时使用。
http://172.20.94.32:8086/此处的/代表,要将原始请求的如172.20.94.32:8081/api/user/login改写为172.20.94.32:8086/user/login,也就是要把从最前面开始的地址/api去掉。如果8086/如果不加/,则会原样的转发,反之则会进行截断和替换。

创建Dockerfile

FROM swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/nginx:1.27.3-alpine
RUN mkdir -p /myweb/wwwroot
COPY ./dist/ /var/www/html/
COPY ./nginx.conf /etc/nginx/nginx.conf

打包镜像:

docker build -t qualitychecker:0.1 .

运行镜像:

docker run -d -p 8081:80 --name web qualitychecker:0.1

当然要实现自动启动,则要加上参数:

--restart=always

完整的就是:

docker run -d -p 8081:80 --name --restart=always web qualitychecker:0.1

即可。

相关文章:

  • Docker技术系列文章,第八篇——Docker 安全基础
  • 华鲲振宇天工TG225 B1国产服务器试装openEuler22.03 -SP4系统
  • LabVIEW多CAN设备连接故障
  • SICAR 标准 KUKA 机器人标准功能块说明手册
  • 激光线检测算法的FPGA实现
  • MyBatis 动态 SQL 优化:标签的实战与技巧
  • u盘文件夹删除没反应的解决办法
  • 语言合成模型Spark-TTS-0.5B学习笔记
  • Java为什么要使用线程池?
  • 【深度学习与实战】2.3、线性回归模型与梯度下降法先导案例--最小二乘法(向量形式求解)
  • 用Python和Stable Diffusion生成AI动画:从图像到视频的全流程指南
  • MYSQL基本语法使用
  • java八股文之JVM
  • 【Mysql】深入理解 MySQL 索引:原理、类型与实践
  • leetcode每日一题:酿造药水需要的最少总时间
  • Ant Design Vue 中的table表格高度塌陷,造成行与行不齐的问题
  • 测试用例生成平台通过大模型升级查询功能,生成智能测试用例
  • 为AI聊天工具添加一个知识系统 之150 设计重审 之15 完整方案及评估 之2
  • 搭建一套正版上门按摩小程序需要具备哪些功能?
  • 预编译能否 100%防 sql 注入?
  • 国泰海通合并后首份业绩报告出炉:一季度净利润增逾391%
  • 从孔雀尾巴到蒙娜丽莎,一个鸟类学博士眼中的“美”
  • 新华保险一季度净赚58.82亿增19%,保费收入增28%
  • 电话费被私改成48元套餐长达数年,投诉后移动公司退补600元话费
  • 老凤祥一季度净利减少两成,去年珠宝首饰营收下滑19%
  • 大理杨徐邱再审上诉案宣判:驳回上诉,维持再审一审判决