Docker+Nginx部署前后端分离项目(SpringBoot+Vue)的详细教程

Barry / 2023-04-29 / 原文

原文:https://blog.csdn.net/dgfdhgghd/article/details/127564496   

 

一.安装docker

在linux中执行下面的代码

yum install docker

检查是否安装成功

docker --version

启动Docker

systemctl start docker

二、安装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

但是很多情况下 compose安装会出现问题,我在安装过程中就出现了问题了,我是采用了下面的语句才改好的

sudo curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

三、编写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"]

四、编写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

 

配置文件中MySQL和Redis的IP地址要改成docker-compose.yml文件中的服务名称。

 

五、编写Nginx的配置文件nginx.conf

现在宿主机创建html目录和nginx.conf文件

 

 

 

编写配置文件nginx.conf

 

#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;
      server_name  101.132.143.220;
      location / {
          root   /usr/share/nginx/html;
          try_files $uri $uri/ /index.html;
          index  index.html index.htm;
      }
      location /api/ {
          proxy_pass http://101.132.143.220:8085;
          proxy_redirect default;
          rewrite ^/api/(.*) /$1 break;
      }
      error_page   500 502 503 504  /50x.html;
      location = /50x.html {
          root   html;
      }
  }
}

 

六、部署前端

前端打包

npm run build

打包成功之后,将dist文件夹中文件全部复制到服务器的 /root/nginx/html 目录中

 

 

七、部署后端

在linx服务器中创建路径 /root/java_project

先将后端打成jar包,然后上传到云服务器上的java_project中,同时Dockfile文件和docker-compose.yml文件也要上传到云服务器上。

 

最后,编排启动服务

docker-compose up -d

还有记得把sql导入到服务器中mysql