使用docker部署前后端分离项目SpringBoot、Vue

本文详细介绍了如何在阿里云服务器上安装Docker和docker-compose,包括设置安全组、部署Docker和docker-compose、编写Dockerfile和docker-compose.yml文件,以及配置Nginx以实现前端和后端服务的整合。作者还分享了解决常见问题的方法和参考资料链接。
摘要由CSDN通过智能技术生成

1.阿里云服务器

  1. 服务器准备
  2. 开放安全组(用啥就开放啥)

2.安装docker

2.1文档说明

  1. 文档

https://help.aliyun.com/zh/ecs/use-cases/deploy-and-use-docker-on-alibaba-cloud-linux-2-instances#aa11e8210adyt

  1. 最终效果(步骤略)

image.png

3.安装docker-compose

sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

安装完后赋予可执行权限

sudo chmod +x /usr/local/bin/docker-compose

检查是否安装成功

docker-compose --version

出现问题
image.png
解决办法
https://blog.csdn.net/uoYevoLi520/article/details/131046798?spm=1001.2014.3001.5506
步骤略
image.png

4.编写Dockfile/docker-compose.yml文件

4.1编写文件

  1. Dockfile模板
#依赖jdk8环境
FROM openjdk:8

#对外暴露8085
EXPOSE 8085
#复制server-1.0-SNAPSHOT到docker容器中并命名为app.jar
ADD server-1.0-SNAPSHOT.jar app.jar
#执行命令
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java", "-jar", "/app.jar", "--spring.profiles.active=pro"]

  1. 我的
#依赖jdk8环境
FROM openjdk:8

#对外暴露8080 8081
EXPOSE 8080
EXPOSE 8081

#复制server-1.0-SNAPSHOT到docker容器中并命名为app.jar
ADD renren-admin.jar app.jar
#执行命令
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java", "-jar", "/app.jar","--spring.profiles.active=dev"]

image.png

  1. 编写docker-compose.yml

模板

version: "3"
services:
  nginx: # 服务名称,用户自定义
    image: nginx:latest  # 镜像版本
    ports:
      - 80:80  # 暴露端口
    volumes: # 挂载
      - /root/nginx/html:/usr/share/nginx/html
      - /root/nginx/nginx.conf:/etc/nginx/nginx.conf
    privileged: true # 这个必须要,解决nginx的文件调用的权限问题
  mysql:
    image: mysql:5.7.27
    ports:
      - 3306:3306
    environment: # 指定用户root的密码
      - MYSQL_ROOT_PASSWORD=admin
  redis:
    image: redis:latest
  server:
    image: server:latest
    build: . # 表示以当前目录下的Dockerfile开始构建镜像
    ports:
      - 8085:8085
    depends_on: # 依赖与mysql、redis,其实可以不填,默认已经表示可以
      - mysql
      - redis

  1. 我的(注意填写数据库密码)
version: "3"
services:
  nginx: # 服务名称,用户自定义
    image: nginx:latest  # 镜像版本
    ports:
      - 80:80  # 暴露端口
    volumes: # 挂载
      - /root/nginx/html:/usr/share/nginx/html
      - /root/nginx/nginx.conf:/etc/nginx/nginx.conf
    privileged: true # 这个必须要,解决nginx的文件调用的权限问题
  mysql:
    image: mysql:8.0
    ports:
      - 3306:3306
    environment: # 指定用户root的密码
      - MYSQL_ROOT_PASSWORD=
  server:
    image: renren-security:latest
    build: . # 表示以当前目录下的Dockerfile开始构建镜像
    ports:
      - 8080:8080
      - 8081:8081
    depends_on: # 依赖与mysql、redis,其实可以不填,默认已经表示可以
      - mysql

image.png

4.2修改ip为docker-compose.yml文件中的服务名称

image.png
image.png

5.编写Nginx的配置文件nginx.conf

5.1创建html文件夹,编写config文件

  1. 创建文件夹

image.png

  1. 编写配置文件
#user  root;
worker_processes  1;
events {
  worker_connections  1024;
}
http {
  include       mime.types;
  default_type  application/octet-stream;
  sendfile        on;
  keepalive_timeout  65;
  server {
      #监听的端口
      listen       80;
      #服务器ip地址
      server_name  your IP;
      location / {
          root   /usr/share/nginx/html;
          try_files $uri $uri/ /index.html;
          index  index.html index.htm;
      }
      #请求转发 请求带有renren-admin则转发到http://ip:8080;按照自己的进行修改
  	  location /renren-admin/ {
  		  proxy_pass http://ip:8080;
  		  proxy_redirect default;
  		  rewrite ^/api/(.*) /$1 break;
  	  }
      error_page   500 502 503 504  /50x.html;
      location = /50x.html {
          root   html;
      }
  }
}

image.png
image.png

6.打包前后端

6.1打包前端

  1. 修改ip地址

image.png

  1. npm run build
    1. 如果出现报错,按照报错内容进行修改
    2. 我的错误(大多是代码中有红色的横线,但是运行的时候没有报错,我也就没有管了,但是打包会不成功)
      1. 解决办法(我的错误的解决办法):都是因为直接const 一个变量,但是有时候没有定义完整,用interface先声明
interface backDataItem {
  id: string;
  name: string;
  category: string;
  depList: string;
  des: string;
  difficulty: string;
  funds: number;
  createBy: string;
  time: string;
}
interface BackInfo {
  id: string;
  name: string;
  cateId: string;
  categoryList: { id:string,value: string; label: string }[];
  depIds: string[];
  depDataSourceList: { id:string,value: string; label: string }[];
  startTime: string;
  endTime: string;
  des: string;
  funds: number;
  difficulty: number;
  status: number;
  createName: string;
  background: string;
  content: string;
  achievementsAndProspects: string;
  remarks: string;
  files: string[];
  fileTemp: string[];
}
  • 打包完成

image.png

  • 将dist里面的代码复制到html文件下

image.png

6.2打包后端

image.png
image.png

  1. 创建java_project文件,将文件上传进去在这里插入图片描述

  2. 输入命令编排启动服务

docker-compose up -d
  • 如果报错 查看Dockfile 和 docker-compose.文件中的文件名称是否一致
  • 成功image.png

7.访问网页

最好先重启一下nginx

  1. 首页image.png
  2. 进入系统image.png

8.参考资料

  1. B站视频
    1. 某马docker视频
    2. 第二篇博客中的视频和文档资料
  2. 博客
    1. https://blog.csdn.net/dgfdhgghd/article/details/127564496?spm=1001.2014.3001.5506
    2. https://blog.csdn.net/uoYevoLi520/article/details/131046798?spm=1001.2014.3001.5506

PS:这是我的毕设,所以还不打算不给源码。

  • 19
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值