将本地项目部署到linux服务器(docker容器)上运行实例(前端vue+后端java)

本文详细介绍了如何将前端Vue项目和后端Java项目分别打包,并部署到Docker容器中的过程。前端项目通过npm run build命令打包,后端项目则通过Maven打包成jar文件。随后,前端的dist文件夹和后端的jar包被分别复制到nginx和JDK容器中,通过Docker命令实现项目的运行。

本篇文章使用服务器为虚拟机/docker容器

1.前端项目

注:这里的前端项目为vue项目
vue项目打包
打开cmd/gitbash/工具自带指令框(都可)
输入npm run build 打包
在这里插入图片描述
打包后项目中会出现一个dist文件夹,下面分别有一个static目录和一个index.html
将static目录和index.html放入虚拟机对应装好的nginx容器中,具体位置为nginx配置的root位置:
指令如下:docker cp 本地文件地址 容器ip:容器指定地址
在这里插入图片描述
之后重启nginx即可:./nginx -s reload
在本地hosts文件将服务器配置的ip和server_name添加进去(C:\Windows\System32\drivers\etc\hosts)
如图所示

配置好即可在浏览器通过访问ip或者server_name来访问前端页面了(如果nginx配置没问题)

2.后端项目

项目打包
如图所示:package打包,打包后可在target目录下找到打好的jar包
在这里插入图片描述
将项目jar包放入创建好的jdk容器中(注:如果打的是war包,则需要容器装有tomcat)

在容器中运行项目:java -Dfile.encoding=utf-8 -jar jar放置的地址/项目名.jar
在容器外(虚拟机)运行项目:docker exec -d dm-eureka-server nohup java -Dfile.encoding=utf-8 -jar jar放置的地址/项目名.jar

注:在容器内运行时,可使用ctrl+c停止项目,容器外则不可以,需要进入容器通过ps -ef|grep java查找到当前进程,通过kill -9 进程号停止进程

此外:在容器内运行时,控制台可看到运行状态,在容器外运行则看不到,需要调试的情况下可使用容器内运行来检查

### 将Vue和Spring Boot应用通过Docker部署到阿里云服务器 #### 准备工作 为了成功完成此过程,需准备如下资源: - **阿里云服务器**一台作为运行环境的基础[^1]。 - 安装并配置好`Xshell`和`Xftp`用于远程连接和文件传输工具[^3]。 #### 构建与打包应用程序 对于前端部分即Vue项目,在开发完成后应构建生产版本。进入项目的根目录执行命令来生成静态资源文件夹`dist`: ```bash npm run build ``` 针对后端即Spring Boot程序,则要确保其能够被打包成一个可独立运行的JAR文件。通常情况下是在IDE内或是通过Maven/Gradle插件实现自动化打包流程。 #### Dockerfile编写 ##### Spring Boot 应用的 `Dockerfile` 在Spring Boot项目的根路径下创建名为`Dockerfile`的文本文件,并写入以下内容以便于将其构建成Docker镜像: ```dockerfile FROM openjdk:8-jdk-alpine VOLUME /tmp ARG JAR_FILE=target/*.jar COPY ${JAR_FILE} app.jar ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] ``` ##### Vue 应用的 `Dockerfile` 同样地,在Vue项目的根目录建立另一个`Dockerfile`,用来定义如何将编译后的前端页面封装至Nginx服务之中: ```dockerfile # 使用官方Node.js基础映像构建阶段 FROM node:lts as builder WORKDIR /app COPY package*.json ./ RUN npm install --silent && mv node_modules ../ COPY . . RUN npm run build # 利用官方Nginx映像发布阶段 FROM nginx:alpine EXPOSE 80 COPY ./nginx.conf /etc/nginx/conf.d/default.conf COPY --from=builder /app/dist /usr/share/nginx/html CMD ["nginx", "-g", "daemon off;"] ``` 这里假设已经有一个自定义的`nginx.conf`位于项目根目录中,它指定了如何处理HTTP请求并将它们路由给正确的HTML/CSS/JS资产。 #### 编写 `docker-compose.yml` 为了让前后端可以更便捷地一起启动起来,推荐使用Docker Compose来进行多容器协调管理。下面是一个简单的例子说明怎样设置这个YAML格式的组合描述文档: ```yaml version: '3' services: backend: image: your-backend-image-name ports: - "8080:8080" environment: SPRING_DATASOURCE_URL: jdbc:mysql://db:3306/your_db_name?useSSL=false&serverTimezone=UTC SPRING_DATASOURCE_USERNAME: root SPRING_DATASOURCE_PASSWORD: password depends_on: - db frontend: image: your-frontend-image-name ports: - "80:80" db: image: mysql:latest environment: MYSQL_ROOT_PASSWORD: password MYSQL_DATABASE: your_db_name ``` 请注意替换上述模板中的占位符(如`your-backend-image-name`, `your-db-name`等),使其匹配实际的应用名称和服务细节。 #### 推送镜像到仓库 & 远程部署 一旦所有的本地测试都顺利完成之后,就可以考虑把制作好的Docker镜像推送到公共或私有的注册中心去了。这一步骤允许其他机器轻松下载所需组件而无需重复整个构建过程。接着借助诸如Ansible、Terraform之类的基础设施即代码(IaC)工具或者是手动方式登录到目标阿里云实例上去拉取这些最新的镜像并按照之前设定好的compose文件启动相应的服务即可[^2]。 #### 使用宝塔面板简化操作 如果倾向于图形界面的操作体验的话,那么安装了宝塔Linux面板将会是个不错的选择。该平台不仅提供了直观易懂的Web UI让用户能快速上手各种运维任务,而且还集成了对Docker的支持功能模块——比如可以直接在线查找并加载官方提供的MySQL, Redis等各种常用数据库系统的最新稳定版镜像;亦可通过上传提前准备完毕的`.tar.gz`压缩包形式导入私人定制化的web应用镜像[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值