如何将一个springboot项目部署到阿里云服务器(包含nginx部署vue,mysql,jar包,使用docker容器化部署)

阿里云服务器

具体操作如下:

可以利用FinalShell或者MobaXterm来远程连接阿里云服务器

nginx服务部署(前端)

首先使用docker拉取nginx镜像源

docker pull nginx

然后将前端文件(vue)使用

npm run build

打包成一个dist文件夹,上传至虚拟机,具体路径如下:

nginx配置文件  nginx.conf


worker_processes  1;

events {
    worker_connections  1024;
}


http {                #前端代理
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
   
    keepalive_timeout  65;
    server {
        listen       8093;   #监听的端口号
    
        location / {
            root  /usr/share/nginx/project1/dist;  #对应服务器中的文件路;
#此处我使用的是docker部署,所以对应docker容器中的文件路径(挂载服务器中的文件)
            index  index.html;
            try_files $uri $uri/ /index.html;  # 支持 Vue 的前端路由
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
#配置后端代理
        location /user/ {  # 匹配以 /user/ 开头的请求
            proxy_pass http://127.0.0.1:8095/;  # 代理到后端服务,注意将IP地址改为你的服务器地址
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 
        
        }
     
    }
    server {
        listen       8094;
    
        location / {
            root  /usr/share/nginx/project2/dist;
            index  index.html;
            try_files $uri $uri/ /index.html;  # 支持 Vue 的前端路由
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        location /admin/ {  # 匹配以 /admin/ 开头的请求
            proxy_pass http://127.0.0.1:8095/;  # 代理到后端服务
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 
        
        }
     
    }


}

上传完成后,运行
 

docker run -d \
  --name nginx \
  -p 8093:8093 \
  -p 8094:8094 \
  -v /root/nginx/project1/dist:/usr/share/nginx/project1/dist \   
  -v /root/nginx/project2/dist:/usr/share/nginx/project2/dist \   
  -v /root/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \         
  --network srtp1 \                                               
  nginx

-d: 后台运行

-p: 代理端口号

-v :挂载项目和配置文件

--network:部署到同一网络(创建网络:docker network create  yournetwork

MySQL服务部署(数据库)

还是先拉取镜像文件

docker pull mysql

然后运行容器

docker run -d \
  --name mysql \
  -p 3306:3306 \
  -e TZ=Asia/Shanghai \
  -e MYSQL_ROOT_PASSWORD=root \
  -v /root/mysql/data:/var/lib/mysql \
  -v /root/mysql/conf:/etc/mysql/conf.d \
  --network srtp1\
  mysql

  -v /root/mysql/data:/var/lib/mysql \  :挂载数据卷->将来数据库在服务器存储数据的位置
  -v /root/mysql/conf:/etc/mysql/conf.d \  :挂载配置文件

如图所示:

然后可以使用可视化工具,例如Sqlyog/Navicat等连接服务器数据库,将准备好的数据导入mysql中,或者也可以通过  docker exec -it mysql bash进入容器内部,然后使用  mysql -u root -p ,输入密码后连接数据库进行操作

jar包部署(后端服务器)

首先将你的项目通过maven/gradle打包,示例(maven):

将jar包上传到服务器

然后可以构建一个Dockerfile文件,用来构建对应的Java项目镜像
Dockerfile文件配置参数如下:

# 基础镜像
FROM openjdk:11.0-jre-buster
# 设定时区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 拷贝jar包
COPY haust-server.jar /srtp.jar
# 入口
ENTRYPOINT ["java", "-jar", "/srtp.jar"]

然后通过命令

docker build -t srtp1 .

构建Java项目镜像,注意   命令中的  .  代表在当前目录下

继续部署容器,命令如下:

docker run -d -p 8095:8095 --name dianchan srtp1 --network srtp1 

最后查看容器日志信息

docker logs dianchan

服务器JDK配置

1.首先下载对应服务器系统的jdk压缩包,我是linux系统,所以下载的是linux系统对应的压缩包

2.将压缩包上传到服务器,通过解压命令将其解压到文件夹(这里我的地址是/usr/local/)

tar -zxvf openjdk-17.0.1_linux-x64_bin.tar.gz -C /usr/local/ 

3. 重命名目录名称(可选择)

mv /usr/local/jdk-17.0.1 /usr/local/jdk17     

4.配置环境变量(当前会话(直接输入配置即可),当前用户(~/.bashrc),全部用户(/etc/profile)),我这里配置的是当前用户

vi ~/.bashrc

按i键进入插入模式,插入下面两行代码

export JAVA_HOME=/usr/local/jdk17
export PATH=$JAVA_HOME/bin:$PATH   

按esc退出插入模式,输入:wq保存并退出

运行文件生效

source ~/.bashrc 

检查配置

echo $JAVA_HOME  
java -version

调试运行jar文件

java -jar haust-server.jar  

后台永久运行

nohup java -jar your-application.jar 

### Docker部署Spring BootVue项目的最佳实践 #### 一、概述 Docker容器化技术能够有效解决不同环境中应用程序运行的一致性问题。对于Spring BootVue这样的前后端分离架构项目,可以通过Docker Compose实现一键部署[^1]。 --- #### 二、前提条件 为了顺利进行部署操作,需具备以下基础知识: - **熟悉Docker基础**:理解镜像、容器的概念以及常用命令。 - **掌握Spring BootVue开发技能**:能独立完两个框架的应用构建。 - **了解YAML语法**:用于编写`docker-compose.yml`配置文件。 --- #### 三、具体步骤说明 ##### 1. 创建Spring Boot服务的Dockerfile 在Spring Boot项目的根目录下创建名为`Dockerfile`的文件,内容如下: ```dockerfile FROM openjdk:17-jdk-slim COPY target/your-application-name.jar app.jar ENTRYPOINT ["java", "-jar", "/app.jar"] ``` 此脚本定义了一个基于OpenJDK的基础镜像,将编译好的`.jar`复制进去作为启动入口[^2]。 ##### 2. 构建前端Vue应用准备静态资源 进入Vue项目的根路径执行构建命令生生产环境下的静态文件,默认会存放在`dist`文件夹内。之后可以利用Nginx来托管这些HTML/CSS/JS资产。 ```bash npm run build ``` 接着在同一层建立另一个专门服务于前端展示部分的Dockerfile实例: ```dockerfile FROM nginx:alpine COPY dist /usr/share/nginx/html EXPOSE 80 CMD ["nginx", "-g", "daemon off;"] ``` 这里选用轻量级版本的NGINX镜像加载之前产生的果集[^3]。 ##### 3. 编写docker-compose.yml组合管理两套组件 在一个共同的工作空间里制定统一调度策略文档——即`docker-compose.yml`,样例如下所示: ```yaml version: '3' services: backend: image: your-backend-image-name container_name: spring-boot-container ports: - "8080:8080" environment: SPRING_DATASOURCE_URL: jdbc:mysql://db:3306/test?useSSL=false&serverTimezone=UTC depends_on: - db frontend: image: your-frontend-image-name container_name: vue-container ports: - "80:80" depends_on: - backend db: image: mysql:5.7 container_name: database-container restart: always environment: MYSQL_ROOT_PASSWORD: examplepassword MYSQL_DATABASE: testdatabase ``` 上述片段展示了三个相互关联的服务单元描述方式,其中包含后端逻辑处理模块(`backend`)、用户界面呈现区段(`frontend`)还有持久存储媒介(`db`)之间的协作关系。 --- #### 四、注意事项 - 确保所有涉及外部网络访问的部分都已设置恰当的安全防护措施。 - 定期更新所使用的官方基础镜像至最新稳定版以获得更好的性能表现及漏洞修复支持。 - 对于敏感数据比如数据库密码等建议采用更安全的方式传递而非明文形式硬编码进配置当中。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值