使用docker部署
- 步骤说明
-
- 1、明确所有要安装的内容
- 2、准备一台服务器(我用的是阿里云的服务器)
- 3、修改配置文件信息:nginx.conf,application.yml,vue.config.js以及代码中有涉及到静态资源的地方:
- 4、检查版本号,迁移数据
- 5、在服务器上安装好docker并且熟悉docker命令(阿里云镜像源:
- 6、将项目资源上传到服务器对应目录(使用Xftp8)
- 7、安装mysql和redis(注:redis要持久化需要配置redis.conf文件)
- 8、编译Dockerfile文件,启动项目
- 9、安装并启动nginx
- 10、通过ip:端口号访问项目网站
步骤说明
1、明确所有要安装的内容
我的mysql版本为8.0,redis版本为7.4.2(要将redis数据迁移的版本号必须兼容,不然dump.rdb无法加载)、jdk17和nginx1.24.0
2、准备一台服务器(我用的是阿里云的服务器)
3、修改配置文件信息:nginx.conf,application.yml,vue.config.js以及代码中有涉及到静态资源的地方:
解释:将localhost改为对应容器名指的是等等创建容器的时候需要将各个容器放在同一个网络下,容器之间的通信可通过容器名访问(类似于域名解析)
使用maven命令clean->package打包target文件夹,生成.jar文件 在前端项目根目录下使用npm run build命令打包dist文件夹
Dockerfile:
# 选择 JDK 17 官方镜像作为基础镜像
FROM openjdk:17-jdk-slim AS build
# 图形验证码需要额外安装库
RUN apt-get update && apt-get install -y \\
libfontconfig1 \\
libx11-dev \\
libxext6 \\
libxrender1 \\
libxtst6 \\
xfonts-base \\
xfonts-75dpi
# 设置工作目录
WORKDIR /app
# 将项目的 jar 文件复制到容器中的 /app 目录(前面目录表示服务器目录,后面的目录表示容器中对应的目录)
COPY springboot_game-0.0.1-SNAPSHOT.jar /app/springboot_game-0.0.1-SNAPSHOT.jar
# 暴露应用运行的端口
EXPOSE 8080
# 设置环境变量
ENV SPRING_PROFILES_ACTIVE=prod
# 启动 Spring Boot 应用
ENTRYPOINT [\”java\”, \”-jar\”, \”/app/springboot_game-0.0.1-SNAPSHOT.jar\”]
nginx.conf:
#user nobody;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
# Nginx请求体最大大小
# 413 Request Entity Too Large
# 默认是1M大小
client_max_body_size 40m;
server {
listen 8090;
server_name game; #对应项目的容器名
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root /usr/share/nginx/html; #对应nginx容器中html的具体存放位置(此位置为系统默认位置)
index index.html index.htm;
#解决history模式下刷新404的问题
try_files $uri $uri/ /index.html;
}
location ^~ /api/ {
rewrite ^/api/(.*)$ /$1 break;
proxy_pass http://game:8080; #解析路径将localhost改成对应容器名
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
application.yml:
spring:
port: 8080
address: 0.0.0.0 #表示允许所有ip访问
data:
redis:
host: redis #对应redis的容器名
database: 5 #redis所使用的数据库
password: 123456 #对应等等容器创建的时候你自己设置的密码
jpa:
hibernate:
ddl-auto: none
datasource:
评论前必须登录!
注册