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

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

 

一.安装docker

在linux中执行下面的代码

yum install docker

检查是否安装成功

docker --version

如果出现如下问题,启动时候报错Failed to start docker.service: Unit docker.service not found.(如下图),原因是CentOS默认使用podman代替docker,所以需要将podman卸载.

https://blog.csdn.net/weixin_53592309/article/details/124695944

 https://blog.csdn.net/weixin_53592309/article/details/124695944

 

 

启动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文件

之前需要把如下文件夹都创建好

/root/java_project/www.enshidai.com/nginx/html/  (文件夹)
/root/java_project/www.enshidai.com/nginx/nginx.conf  (文件夹和文件,nginx.conf 内容见第五部分)
/home/mysql/enshidai/data/      (文件夹)
/home/mysql/enshidai/conf   (文件夹)

 

docker-compose.yml  如下

version: "3"
services:
nginx: # 服务名称,用户自定义
image: nginx:latest # 镜像版本
# container_name: web-nginx # 容器名字
restart: always # 开机自动重启
ports:
- 80:80 # 暴露端口
volumes: # 挂载
- /root/java_project/www.enshidai.com/nginx/html:/usr/share/nginx/html
- /root/java_project/www.enshidai.com/nginx/nginx.conf:/etc/nginx/nginx.conf
privileged: true # 这个必须要,解决nginx的文件调用的权限问题
mysql:
image: mysql:5.7.27
ports:
- 3306:3306
volumes:
- /home/mysql/enshidai/data:/var/lib/mysql
- /home/mysql/enshidai/conf:/etc/mysql
restart: always
environment: # 指定用户root的密码
- MYSQL_ROOT_PASSWORD=root
redis:
image: redis:latest
# container_name: web-redis
restart: always
server:
image: server:latest
build: . # 表示以当前目录下的Dockerfile开始构建镜像
ports:
- 8085:8085
# volumes: # 挂载
# - /usr/image:/usr/image
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

 

posted @ 2023-04-27 21:49  流月无双  阅读(417)  评论(0编辑  收藏  举报