文章目录

  • 前言
  • 一、打包前的准备
  • 1.修改前端代理访问后端的IP和端口
  • 2.修改后端配置文件
  • 二、前后端打包
  • 1.前端打包
  • 2.后端打包
  • 三、上传和整理所需文件
  • 四、使用docker-compose启动容器
  • 五、后续处理
  • 1.检查容器
  • 2.导入数据库文件
  • 3.最后注意点
  • 总结



前言

近期把项目部署在服务器上差点把我给整崩,现在重新整理一下部署流程。这也算是做一次记录,防止以后忘记了。


一、打包前的准备

1.修改前端代理访问后端的IP和端口

代码如下(示例):

devServer: {
        port: 端口号,
        proxy: {
            '/URL': {
                target: 'http://“后端IP:后端的端口号', // 后端
            }
        }
    }

2.修改后端配置文件

代码如下(示例):

*

version: '3'

services:
  web-name: # 服务名称,用户自定义
    image: nginx:latest  # 镜像版本
    container_name: '容器名'
    ports:
    ……
    ……
    - /……
    - /……
    ……
  redis: # 服务名
    image: ……
    ……
  web-server: # 服务名
    container_name: '容器名'
    build: .
    ports:
      ……
  mysql: # 服务名
    image: ……
    ports:
      ……
    environment:
      ……

主要是将下面springboot配置文件里的IP地址修改成上面服务名

#数据库连接
# MySQL
spring.datasource.url=jdbc:mysql://服务名(上面docker-compose.yml):3306/……
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.username=#
spring.datasource.password=#
# Redis
spring.redis.host= 服务名(同上)
spring.redis.port=6379
spring.redis.password=cl20030525

二、前后端打包

1.前端打包

在IDEA的控制台里直接输入:npm run build

2.后端打包

在maven里点clean----compile—package

dockercompose 部署postgresql sql脚本 dockercompose部署springboot_mysql


三、上传和整理所需文件

* 注:这里的dist和web-server.jar是前后端项目的包

dockercompose 部署postgresql sql脚本 dockercompose部署springboot_docker_02


这里的Dockerfile之后直接通过docker-compose直接构建,不需要 docker build

FROM java:8 # 基础镜像
ADD web-server.jar app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java", "-jar", "/app.jar", "--spring.profiles.active=pro"]

nginx.conf的内容

server {
    listen       80; #这里监听的是容器端口
    server_name  ***.**.** localhost; #这里主要写IP或域名(服务器或虚拟机的)注:多个可以用空格隔开

    location / { #URL
        root   /usr/share/nginx/html; 
        try_files $uri $uri/ /index.html last;
        index  index.html index.htm;
    }

    location /URL { #URL地址的内容 如 http://**:**/URL/
        proxy_pass http://服务器IP或虚拟机IP:9999; #代理转发
        proxy_set_header Host $host:$server_port;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

四、使用docker-compose启动容器

使用 “ docker-compose up -d ” 后台运行容器 (注:需要在docker-compose.yml文件的目录下执行命令)

代码如下(示例):

version: '3'

services:
  web-name: # 服务名称,用户自定义
    image: nginx:latest  # 镜像版本
    container_name: '容器名'
    ports:
    - 3000:80  # 暴露端口
    volumes: # 挂载
    - /home/ly/docker-boot/dockerweb/dist/:/usr/share/nginx/html #前端项目的包挂载到nginx上
    - /home/ly/docker-boot/dockerweb/nginx.conf:/etc/nginx/conf.d/nginx.conf #挂载nginx配置文件
    privileged: true
  redis: # 服务名
    image: redis:latest
    command: redis-server --requirepass ***** # 设置Redis的密码
  web-server: # 服务名
    container_name: '容器名'
    build: . # 这里是直接构建Dockerfiler
    ports:
      - 9999:8080
  mysql: # 服务名
    image: mysql:5.7.36
    ports:
      - 3306:3306
    environment:
      - MYSQL_ROOT_PASSWORD=root #设置MySQL用户的密码

五、后续处理

1.检查容器

使用 docker ps 可以查看所有运行中容器(注:有些容器没出现可以用 “ docker ps -a ” 找到,出现这种情况可能是容器内部出错,使用 “docker logs -f 容器ID或容器名 ” 可查看错误)

dockercompose 部署postgresql sql脚本 dockercompose部署springboot_redis_03

2.导入数据库文件

使用 “docker cp 文件名 容器ID:路径” 复制进容器里(注:将文件复制出来只需交换文件名与容器ID和路径即可)
例:docker cp project.sql 35bf7e18ce27:/

进入容器使用:docker exec -it 容器ID /bin/bash

导入文件:

root@35bf7e18ce27:/# mysql -u root -p < projectdb.sql #一般默认为root
Enter password: #这里填docker-compose里的密码

3.最后注意点

一定一定一定要重启前后端容器,我就是在这里未重启,导致好几天前端请求不到后端。
重启命令:
docker-compose 为:docker-compose restart 前端服务名 后端服务名(就是上面的docker-comopse.yml里的服务名)
docker 为:docker restart 容器ID (不确定多个容器能否使用空格隔开)

总结


例如:以上就是部署项目的内容,以后可能会加些细节。