05 - Docker Centos8 运行 SpringBoot 项目

本文介绍了如何在CentOS8系统中利用Dockerfile创建Docker镜像,并运行SpringBoot应用程序。首先,安装了JDK和Maven,然后通过脚本进行源代码构建和打包。在遇到JRE缺少编译器的问题时,通过安装java-devel解决。接着,编写了构建和部署脚本,包括清理旧容器和镜像,构建新的Docker镜像,并启动容器。整个过程确保了应用的顺利部署和运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Docker Centos8 运行 SpringBoot 项目

项目根路径下创建一个 Dockerfile

FROM openjdk:8-jdk-alpine

VOLUME /tmp

# 添加生成的jar包到容器中, 容器构建镜像时会指定jar包的路径,所以这里只需要文件名即可
ADD [生成的jar包的名字].jar app.jar

ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "app.jar", "--spring.profiles.active=test", "-c"]

服务器上提前安装好jdk和maven

这里先不依赖jenkins打包, 直接使用脚本构建

Centos8 安装 JDK

$ yum -y install java-1.8.0-openjdk

# 测试
$ java -version
openjdk version "1.8.0_292"
OpenJDK Runtime Environment (build 1.8.0_292-b10)
OpenJDK 64-Bit Server VM (build 25.292-b10, mixed mode)

Centos8 安装 Maven

# 下载
$ https://mirrors.cnnic.cn/apache/maven/maven-3/3.8.1/binaries/apache-maven-3.8.1-bin.tar.gz

# 解压
$ tar vxf apache-maven-3.3.9-bin.tar.gz

# 设置环境变量
$ export MAVEN_HOME=/usr/lib/maven
$ export PATH=${PATH}:${MAVEN_HOME}/bin
$ source /etc/profile

# 测试
$ mvn -v
Apache Maven 3.8.1 (05c21c65bdfed0f71a2f2ada8b84da59348c4c5d)
Maven home: /opt/apache-maven-3.8.1
Java version: 1.8.0_292, vendor: Red Hat, Inc., runtime: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.292.b10-0.el8_3.x86_64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "4.18.0-240.15.1.el8_3.x86_64", arch: "amd64", family: "unix"
异常

No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?

解决办法:

yum install -y java-devel

创建源代码仓库

# 根目录
$ mkdir -p /opt/demon-cms

# 拉取源代码
$ git clone xxxx.git /opt/demon-cms/repository

# 测试构建是否正常
$ cd /opt/demon-cms/repository
$ mvn clean package -Dmaven.test.skip=true

编写构建脚本

#进入根目录
cd /opt/demon-cms/repository    

# 拉取代码, 强制用远程分支覆盖本地分支
git fetch --all
git reset --hard origin/master

# 打包代码
mvn clean package -Dmaven.test.skip=true

# 容器名字
SERVER_NAME=demon-cms

#容器id
CID=$(docker ps | grep "$SERVER_NAME" | awk '{print $1}')
#镜像id
IID=$(docker images | grep "$SERVER_NAME" | awk '{print $3}')
#当前日期
DATE=`date +%Y%m%d`

#清除旧容器
if [ -n "$CID" ]; then
	echo "存在$SERVER_NAME容器,CID=$CID"
	echo "停止旧容器"
docker stop $SERVER_NAME
echo "删除旧容器"
docker rm $SERVER_NAME
fi

# 清楚旧镜像
if [ -n "$IID" ]; then
	echo "存在$SERVER_NAME镜像,IID=$IID"
	echo "删除镜像"
docker rmi $IID
fi

#构建镜像
echo "开始构建镜像"
docker build -f ./demon-cms-admin/Dockerfile -t
# 这里的/target 是 Dockerfile里面的 ADD 的根目录
$SERVER_NAME:v${DATE} ./demon-cms-admin/target
echo "构建镜像成功!"


# 运行docker容器
echo "创建并启动$SERVER_NAME容器..."
docker run --name $SERVER_NAME -d -p 8888:8888 -v /data/logs/demon-cms:/data/logs/demon-cms $SERVER_NAME:v${DATE}
echo "$SERVER_NAME容器启动完成"

好的,以下是使用 Jenkins 和 Docker 进行 CentOS 部署 Spring Boot 项目的详细步骤和命令: 1. 在 CentOS 中安装 DockerDocker Compose ```bash # 安装 Docker sudo yum update sudo yum install docker # 安装 Docker Compose sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose ``` 2. 在 CentOS 中拉取 Docker 镜像 ```bash # 从 Docker 仓库中拉取镜像 sudo docker pull your-docker-registry/image-name:tag ``` 3. 在 CentOS运行 Spring Boot 镜像 ```bash # 运行 Spring Boot 镜像 sudo docker run -d -p 8080:8080 your-docker-registry/image-name:tag # 如果你的 Spring Boot 应用需要使用数据库,你需要为其配置一个数据库服务。你可以使用 Docker Compose 来管理容器编排。 # 在服务器上创建一个文件夹来存储 Docker Compose 配置文件 mkdir ~/docker-compose # 在该文件夹中创建一个 docker-compose.yml 文件 nano ~/docker-compose/docker-compose.yml # 编辑该文件并添加以下内容: version: "3" services: app: image: your-docker-registry/image-name:tag ports: - "8080:8080" db: image: postgres environment: POSTGRES_USER: your-db-user POSTGRES_PASSWORD: your-db-password POSTGRES_DB: your-db-name # 启动 Docker Compose cd ~/docker-compose sudo docker-compose up -d # 如果你需要停止 Docker Compose sudo docker-compose down ``` 4. 在 Jenkins 中配置 Maven 插件和 Docker 插件 - 在 Jenkins 中安装 Maven 插件和 Docker 插件。 - 在 Jenkins 中配置 Docker 插件,确保 Jenkins 可以与 Docker 交互。 5. 在 Jenkins 中创建一个新的构建项目 - 在 Jenkins 中创建一个新的 Maven 项目,并配置 Git 代码库以获取源代码。 - 在构建项目中配置 Maven 构建步骤,构建出可执行的 Spring Boot jar 包。 - 在构建项目中添加一个后置操作步骤,使用 Docker 插件进行 Docker 镜像的构建。你需要为 Docker 镜像指定一个名称和标签,并指定构建上下文。 - 在构建项目中添加另一个后置操作步骤,使用 Docker 插件将构建好的镜像推送到 Docker 仓库中。 6. 在目标服务器上使用 Docker 运行 Spring Boot 镜像 - 在目标服务器上拉取构建好的 Spring Boot 镜像。 - 在目标服务器上使用 Docker 运行 Spring Boot 镜像,你可以使用 Docker Compose 或 Docker Stack 进行容器编排和管理。 以上是使用 Jenkins 和 Docker 进行 CentOS 部署 Spring Boot 项目的详细步骤和命令,希望对你有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Demon-HY

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值