使用jenkins部署前后端分离应用

使用jenkins部署前后端分离应用

个人博客地址预览:
www.ciliblog.com

环境(软件)准备
1、需要安装docker
2、需要安装docker的nginx
3、需要安装Java环境,并配置环境变量
4、需要安装node并配置环境变量
5、需要安装maven并配置环境变量
6、需要安装jenkins,并更换镜像源
7、虚拟机安装git
8、需要gitee账号,或GitHub账号
以上环境(软件)可以参考【10分钟拥有虚拟机。。。】这篇文章
https://mp.weixin.qq.com/s/eh-_ysXrkn1lz2nzMf9sRw

或
https://blog.youkuaiyun.com/qq_17369545/article/details/125733469
服务器访问不了处理
1、需要开启安全组
2、需要防火墙放行端口
作用域是public,开放tcp协议的8080端口,一直有效
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --reload
需要在jenkins里面配置好maven、java、环境变量
CLASSPATH  .:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
JAVA_HOME  /usr/java/jdk1.8.0_231
M2_HOME  /usr/local/maven
PATH    $JAVA_HOME/bin:$PATH
PATH+EXTRA  $M2_HOME/bin
添加代码下载地址
1、新建任务
2、源码管理 ,url填写仓库地址,Credentials新增一个填写gitee的登录账号密码
jenkins初尝
1、配置里(在源码管理右侧),选择增加构建步骤,选择执行shell,
2、echo "hello world jenkins 小伙子"
3、点击应用
4、点击构建
5、查看构建记录
6、点击控制台输出
7、可以看到拉取代码,打印这句话。
构建部署前端(路径都用绝对路径)
1、目标:将打包好的dist目录下的东西放到nginx的html文件夹里面就行
2、脚本(构建里新增 执行shell)
cd blog-view
npm install
rm -rf ./dist/*
npm run build
rm -rf /mydata/nginx/html/*
cp -rf ./dist/* /mydata/nginx/html
chown -R jenkins:jenkins /mydata/nginx/html
3、点击执行构建
构建部署后端(路径都用绝对路径)
1、目标,将jar包使用Java命令启动起来
2、脚本
(构建)
cd vueblog
mvn clean package
cp -rf ./target/*.jar /usr/local/cili_blog
sh /usr/local/cili_blog/stop.sh
(构建后)
sh /usr/local/cili_blog/start.sh

shell脚本文件内容

start.sh
export BUILD_ID=dontKillMe
nohup java -jar /usr/local/cili_blog/vueblog-0.0.1-SNAPSHOT.jar  > logTest.log 2>&1 &

stop.sh
ps aux | grep vueblog-0.0.1-SNAPSHOT.jar | grep -v "grep" | awk '{print "kill -9 "$2}' | sh

注意:
jenkins会将shell启动的子进程kill掉,因此需要在start脚本中特殊处理一下(dontkillMe)
<think>我们手头有一个任务:在IntelliJIDEA中使用Docker部署前后端分离项目。这涉及到多个步骤,包括Docker环境的准备、编写Dockerfile、配置IDEA的Docker插件等。我们将根据提供的引用信息,整合一个详细的教程。引用[1]、[2]、[3]都提到了使用IDEA的Docker插件来简化部署过程。引用[4]和[5]则提供了关于Dockerfile和部署命令的细节。###步骤1:环境准备-服务器安装Docker,并开启远程访问(确保安全设置,如TLS加密)[^1][^2]。-本地安装IntelliJIDEA,并安装Docker插件(通常已经内置,如果没有则通过Plugins安装)[^1]。###步骤2:创建前后端项目-后端:使用SpringBoot创建一个RESTAPI项目,并打包成JAR文件[^2][^5]。-前端:可以使用Vue.js、React等框架,并打包生成静态文件(如dist目录)[^3]。###步骤3:编写Dockerfile每个项目(后端和前端)都需要一个Dockerfile。**后端Dockerfile示例(参考引用[5]):**```dockerfile#使用OpenJDK8作为基础镜像FROMopenjdk:8#将构建好的JAR包复制到容器中,并命名为app.jarCOPYtarget/*.jar/app.jar#暴露端口(根据实际应用端口)EXPOSE8080#启动命令ENTRYPOINT["java","-jar","app.jar"]```**前端Dockerfile示例(参考通用做法):**```dockerfile#使用Nginx作为基础镜像FROMnginx:alpine#将前端构建的静态文件复制到Nginx的默认站点目录COPYdist/usr/share/nginx/html#暴露80端口EXPOSE80#Nginx镜像已经自带启动命令,无需指定```###步骤4:配置IDEA的Docker插件1.在IDEA中,打开设置(Settings),找到`Build,Execution,Deployment`->`Docker`。2.添加一个Docker连接,选择`TCPsocket`,输入服务器地址(如`tcp://your-docker-host:2375`),注意安全建议使用TLS(引用中未提及TLS配置,但实际生产建议配置)[^1][^2]。3.测试连接,确保连接成功。###步骤5:使用Docker插件部署后端1.在IDEA中打开后端项目,确保已经生成JAR包(可通过Maven或Gradle的package任务)。2.找到并编辑后端项目的Dockerfile。3.在Dockerfile文件中右键,选择`Run'Dockerfile'`(或者使用“Services”窗口的Docker插件操作)[^1]。4.配置运行选项:指定镜像名称(如`backend-image`)和容器名(如`backend-container`),映射端口(如`8080:8080`)等。5.运行后,IDEA会自动构建镜像并启动容器。###步骤6:使用Docker插件部署前端1.同样,在前端项目根目录(包含dist和Dockerfile)执行类似操作。2.注意:前端部署需要先构建静态文件(如执行`npmrunbuild`生成dist目录),再执行Docker构建。3.运行前端Dockerfile,构建镜像并启动容器。如果前端需要访问后端API,需配置反向代理(Nginx配置)或者环境变量指定后端地址。###步骤7:使用DockerCompose(可选,但推荐)前后端分离项目通常需要一起启动,且可能有依赖关系(如前端需要后端先启动)。可以使用DockerCompose定义多容器应用。1.在项目根目录(或专门目录)创建`docker-compose.yml`文件:```yamlversion:'3'services:backend:image:backend-imagebuild:context:./backend#指向后端项目目录ports:-"8080:8080"networks:-my-networkfrontend:image:frontend-imagebuild:context:./frontend#指向前端项目目录ports:-"80:80"depends_on:-backendnetworks:-my-networknetworks:my-network:driver:bridge```2.在IDEA中,打开`docker-compose.yml`,右键选择运行。IDEA会依次构建并启动后端和前端容器。###注意事项-**网络通信**:前后端容器在同一个网络(如上述`my-network`)中,前端容器可以通过服务名(如`backend`)访问后端API。-**前端配置**:前端项目构建时需要配置后端API的地址(例如,可以设置为环境变量,在Docker运行时传入)[^3]。-**数据持久化**:如有数据库,需配置卷(volumes)持久化数据[^3][^5]。-**安全**:Docker远程API开启时注意防火墙和加密(推荐使用SSH隧道或TLS加密)[^1][^2]。###总结通过上述步骤,我们可以在IDEA中利用Docker插件轻松部署前后端分离项目。核心步骤包括环境准备、编写Dockerfile、配置Docker插件、构建镜像并运行容器(或使用DockerCompose)。这样可以避免手动输入重复的Docker命令,提高开发效率。§§相关问题§§1.IDEA中如何配置Docker的TLS安全连接?2.如何在前端Docker容器中配置后端API地址?3.如何在IDEA中调试运行在Docker容器中的Java应用?4.DockerCompose部署时如何实现服务健康检查?</think> ### IntelliJ IDEA 使用 Docker 部署前后端分离项目详解 以下是整合引用资料的完整教程,涵盖**环境准备**、**配置步骤**和**一键部署**全流程: --- #### 一、环境准备 1. **服务器端** - 安装 Docker 并开启远程访问(安全建议:启用 TLS 加密或 SSH 隧道)[^1][^2] ```bash # 编辑 Docker 配置 vim /lib/systemd/system/docker.service # 在 ExecStart 后添加:-H tcp://0.0.0.0:2375 sudo systemctl daemon-reload sudo systemctl restart docker ``` - 安装 Java、Node.js 等运行时依赖(按项目需求)[^3][^5] 2. **开发端** - IntelliJ IDEA 安装 **Docker 插件**(Settings > Plugins > 搜索 Docker)[^1] - 项目需支持打包: * 后端:生成可执行 JAR(如 Spring Boot `mvn package`)[^2][^5] * 前端:构建静态资源(如 Vue/React 的 `npm run build`)[^3] --- #### 二、配置 Dockerfile 根据引用提供的关键配置: 1. **后端 Dockerfile**(参考引用[5]) ```dockerfile FROM openjdk:8 # Java 基础镜像 COPY target/*.jar /app.jar # 复制 JAR 包 EXPOSE 8080 # 暴露端口(按实际修改) ENTRYPOINT ["java","-jar","app.jar"] # 启动命令 ``` 2. **前端 Dockerfile** ```dockerfile FROM nginx:alpine # Nginx 基础镜像 COPY dist /usr/share/nginx/html # 复制构建后的静态文件 EXPOSE 80 # 无需 ENTRYPOINT(基础镜像已包含) ``` --- #### 三、IDEA Docker 插件配置 1. **连接 Docker 守护进程** - 打开 **Services 窗口**(View > Tool Windows > Services) - 添加 Docker 连接: * 类型:**TCP socket** * 地址:`tcp://<服务器IP>:2375`(建议用 SSH 或 TLS 加密传输)[^1][^2] ![](https://example.com/docker-connection.png) 2. **配置容器部署** 1. 编辑 `Run/Debug Configurations` 2. 添加 **Dockerfile** 类型配置: - 选择 Dockerfile 路径 - 设置镜像名称(如 `my-backend:v1`) - 绑定端口:`主机端口:容器端口`(如 `9090:8080`)[^5] - 挂载目录(按需) 3. 启用 **Bind port mappings** 暴露端口 --- #### 四、一键部署前后端分离项目 1. **方案 1:独立部署(推荐新手)** - 后端:右键单击 `Dockerfile` > **Run 'Dockerfile'** - 前端:同上操作部署 Nginx 容器 - **通信关键**:前端配置代理指向后端容器 IP 或服务器域名[^3] 2. **方案 2:Docker Compose(高效管理)** 1. 创建 `docker-compose.yml`: ```yaml version: '3' services: backend: build: ./backend # 指向 Dockerfile 目录 ports: - "8080:8080" frontend: build: ./frontend ports: - "80:80" depends_on: - backend ``` 2. 在 IDEA 中右键执行 Compose 文件(需安装 **Docker Compose** 插件)[^3] --- #### 五、调试与问题排查 - **日志查看**:Services 窗口 > Docker > 容器名 > **Log** 标签页[^1] - **容器 Shell**:右键容器选择 **Open in Terminal** - **端口冲突**:`netstat -tuln | grep <端口号>` 检查占用[^4] - **部署后进程被杀**:Jenkins 等工具需加 `BUILD_ID=dontKillMe`(引用[4]场景) --- ### 引用说明 > 本文整合了 IDEA Docker 插件的核心操作流程,具体细节可参考: > - 前置准备:[^1][^2] > - Dockerfile 规范:[^5] > - 容器通信与分离部署方案:[^3] > - 进程管理技巧:[^4] ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码头薯条Pro

本文能帮到阁下,在下很开心!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值