docker镜像安装java-openjdk以及openjdk-debuginfo

本文介绍如何在CentOS 7系统中安装并配置Java 8运行环境,包括使用yum命令安装openjdk-devel及debuginfo包,创建Java用户,并设置工作目录。
FROM centos:7

RUN yum install -y java-1.8.0-openjdk-devel && \
    yum install -y java-1.8.0-openjdk-debuginfo --enablerepo=*debug*

RUN useradd jdk-user

USER jdk-user

WORKDIR /home/jdk-user

CMD bash

Started by user admin Obtained Jenkinsfile from git https://gitee.com/huyongcaiii/jenkins-demo.git [Pipeline] Start of Pipeline [Pipeline] node Running on Jenkins in /var/jenkins_home/workspace/jenkins [Pipeline] { [Pipeline] stage [Pipeline] { (Declarative: Checkout SCM) [Pipeline] checkout Selected Git installation does not exist. Using Default The recommended git tool is: NONE No credentials specified > git rev-parse --resolve-git-dir /var/jenkins_home/workspace/jenkins/.git # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url https://gitee.com/huyongcaiii/jenkins-demo.git # timeout=10 Fetching upstream changes from https://gitee.com/huyongcaiii/jenkins-demo.git > git --version # timeout=10 > git --version # 'git version 2.47.3' > git fetch --tags --force --progress -- https://gitee.com/huyongcaiii/jenkins-demo.git +refs/heads/*:refs/remotes/origin/* # timeout=10 > git rev-parse refs/remotes/origin/master^{commit} # timeout=10 Checking out Revision b0ae350a40520e4840332757d690e685cd882fe4 (refs/remotes/origin/master) > git config core.sparsecheckout # timeout=10 > git checkout -f b0ae350a40520e4840332757d690e685cd882fe4 # timeout=10 Commit message: "超时处理" > git rev-list --no-walk b0ae350a40520e4840332757d690e685cd882fe4 # timeout=10 [Pipeline] } [Pipeline] // stage [Pipeline] withEnv [Pipeline] { [Pipeline] withEnv [Pipeline] { [Pipeline] stage [Pipeline] { (Checkout) [Pipeline] echo 从Gitee拉取代码... [Pipeline] checkout Selected Git installation does not exist. Using Default The recommended git tool is: NONE No credentials specified > git rev-parse --resolve-git-dir /var/jenkins_home/workspace/jenkins/.git # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url https://gitee.com/huyongcaiii/jenkins-demo.git # timeout=10 Fetching upstream changes from https://gitee.com/huyongcaiii/jenkins-demo.git > git --version # timeout=10 > git --version # 'git version 2.47.3' > git fetch --tags --force --progress -- https://gitee.com/huyongcaiii/jenkins-demo.git +refs/heads/*:refs/remotes/origin/* # timeout=10 > git rev-parse refs/remotes/origin/master^{commit} # timeout=10 Checking out Revision b0ae350a40520e4840332757d690e685cd882fe4 (refs/remotes/origin/master) > git config core.sparsecheckout # timeout=10 > git checkout -f b0ae350a40520e4840332757d690e685cd882fe4 # timeout=10 Commit message: "超时处理" [Pipeline] } [Pipeline] // stage [Pipeline] stage [Pipeline] { (Build) [Pipeline] echo 构建Spring Boot应用... [Pipeline] sh + chmod +x ./mvnw + chmod +x ./mvnw.cmd + ./mvnw clean package -DskipTests -Dmaven.test.skip=true [INFO] Scanning for projects... [INFO] [INFO] -----------------------< org.example:jenkinsss >------------------------ [INFO] Building jenkinsss 0.0.1-SNAPSHOT [INFO] from pom.xml [INFO] --------------------------------[ jar ]--------------------------------- [INFO] [INFO] --- clean:3.4.1:clean (default-clean) @ jenkinsss --- [INFO] Deleting /var/jenkins_home/workspace/jenkins/target [INFO] [INFO] --- resources:3.3.1:resources (default-resources) @ jenkinsss --- [INFO] Copying 1 resource from src/main/resources to target/classes [INFO] Copying 0 resource from src/main/resources to target/classes [INFO] [INFO] --- compiler:3.14.0:compile (default-compile) @ jenkinsss --- [INFO] Recompiling the module because of changed source code. [INFO] Compiling 2 source files with javac [debug parameters release 17] to target/classes [INFO] [INFO] --- resources:3.3.1:testResources (default-testResources) @ jenkinsss --- [INFO] Not copying test resources [INFO] [INFO] --- compiler:3.14.0:testCompile (default-testCompile) @ jenkinsss --- [INFO] Not compiling test sources [INFO] [INFO] --- surefire:3.5.4:test (default-test) @ jenkinsss --- [INFO] Tests are skipped. [INFO] [INFO] --- jar:3.4.2:jar (default-jar) @ jenkinsss --- [INFO] Building jar: /var/jenkins_home/workspace/jenkins/target/jenkinsss-0.0.1-SNAPSHOT.jar [INFO] [INFO] --- spring-boot:3.5.6:repackage (repackage) @ jenkinsss --- [INFO] Replacing main artifact /var/jenkins_home/workspace/jenkins/target/jenkinsss-0.0.1-SNAPSHOT.jar with repackaged archive, adding nested dependencies in BOOT-INF/. [INFO] The original artifact has been renamed to /var/jenkins_home/workspace/jenkins/target/jenkinsss-0.0.1-SNAPSHOT.jar.original [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 18.436 s [INFO] Finished at: 2025-10-14T08:46:28Z [INFO] ------------------------------------------------------------------------ + ls -la target/jenkinsss-0.0.1-SNAPSHOT.jar -rw-r--r-- 1 jenkins 987 20996192 Oct 14 16:46 target/jenkinsss-0.0.1-SNAPSHOT.jar [Pipeline] } [Pipeline] // stage [Pipeline] stage [Pipeline] { (Docker Build) [Pipeline] echo 构建Docker镜像... [Pipeline] sh + docker --version + echo Docker可用,开始构建镜像 Docker可用,开始构建镜像 + echo 尝试构建Docker镜像... 尝试构建Docker镜像... + timeout 300 docker build --network=host -t jenkins-demo:15 . DEPRECATED: The legacy builder is deprecated and will be removed in a future release. Install the buildx component to build images with BuildKit: https://docs.docker.com/go/buildx/ Sending build context to Docker daemon 38.4kB Step 1/20 : FROM openjdk:21.0.8-jdk-slim AS builder Get "https://registry-1.docker.io/v2/": context deadline exceeded + echo Docker镜像构建失败(网络超时),将使用直接部署方式 Docker镜像构建失败(网络超时),将使用直接部署方式 + echo USE_DIRECT_DEPLOY=true [Pipeline] } [Pipeline] // stage [Pipeline] stage [Pipeline] { (Stop Previous Container) [Pipeline] echo 停止之前的容器... [Pipeline] sh + docker --version + echo Docker可用,停止旧容器 Docker可用,停止旧容器 + docker stop jenkins-demo-app Error response from daemon: No such container: jenkins-demo-app + true + docker rm jenkins-demo-app Error response from daemon: No such container: jenkins-demo-app + true + echo 旧容器已清理 旧容器已清理 [Pipeline] } [Pipeline] // stage [Pipeline] stage [Pipeline] { (Deploy Application) [Pipeline] echo 部署应用... [Pipeline] sh + [ -f /tmp/deploy_mode ] + grep -q USE_DIRECT_DEPLOY=true /tmp/deploy_mode + echo 使用直接部署方式(Docker构建失败)... 使用直接部署方式(Docker构建失败)... + USE_DIRECT_DEPLOY=true + [ true = true ] + echo === 直接部署模式 === === 直接部署模式 === + DEPLOY_DIR=/var/jenkins_home/apps/jenkins-demo + mkdir -p /var/jenkins_home/apps/jenkins-demo + cp target/jenkinsss-0.0.1-SNAPSHOT.jar /var/jenkins_home/apps/jenkins-demo/ + cd /var/jenkins_home/apps/jenkins-demo + export JAVA_OPTS=-Xmx512m -Xms256m -Dserver.port=8989 -Dserver.address=0.0.0.0 + echo 启动应用... 启动应用... + echo 592 + nohup java -Xmx512m -Xms256m -Dserver.port=8989 -Dserver.address=0.0.0.0 -jar jenkinsss-0.0.1-SNAPSHOT.jar + echo 直接部署完成 直接部署完成 + echo 部署目录: /var/jenkins_home/apps/jenkins-demo 部署目录: /var/jenkins_home/apps/jenkins-demo + cat /tmp/jenkins-demo.pid + echo 进程ID: 592 进程ID: 592 + echo 日志文件: /var/jenkins_home/apps/jenkins-demo/app.log 日志文件: /var/jenkins_home/apps/jenkins-demo/app.log [Pipeline] } [Pipeline] // stage [Pipeline] stage [Pipeline] { (Health Check) [Pipeline] echo 健康检查... [Pipeline] sh + echo 等待应用启动... 等待应用启动... + sleep 15 + docker --version + echo === Docker容器健康检查 === === Docker容器健康检查 === + docker ps + grep jenkins-demo-app + echo 容器未运行 容器未运行 + echo === 容器启动日志 === === 容器启动日志 === + docker logs --tail 20 jenkins-demo-app Error response from daemon: No such container: jenkins-demo-app + echo 无法获取容器日志 无法获取容器日志 + echo === 端口检查 === === 端口检查 === + docker port jenkins-demo-app Error response from daemon: No such container: jenkins-demo-app + echo 端口映射检查失败 端口映射检查失败 + echo === 健康检查 === === 健康检查 === + docker exec jenkins-demo-app curl -f http://localhost:8989/actuator/health + echo ⚠️ 应用健康检查失败,但容器仍在运行 ⚠️ 应用健康检查失败,但容器仍在运行 + echo === 外部访问测试 === === 外部访问测试 === + curl -f http://localhost:8989/hello + echo ⚠️ 外部访问失败 ⚠️ 外部访问失败 + echo 可能的原因: 可能的原因: + echo 1. 应用未正确绑定到0.0.0.0 1. 应用未正确绑定到0.0.0.0 + echo 2. 容器网络配置问题 2. 容器网络配置问题 + echo 3. 防火墙阻止连接 3. 防火墙阻止连接 [Pipeline] } [Pipeline] // stage [Pipeline] stage [Pipeline] { (Declarative: Post Actions) [Pipeline] echo 构建完成 [Pipeline] archiveArtifacts Archiving artifacts Recording fingerprints [Pipeline] echo 构建和部署成功! [Pipeline] echo 应用访问地址: http://localhost:8989 [Pipeline] echo 健康检查地址: http://localhost:8989/actuator/health [Pipeline] echo Hello接口: http://localhost:8989/hello [Pipeline] echo 部署目录: /opt/cefoc_env_dev/apps/jenkins-demo [Pipeline] echo 容器名称: jenkins-demo-app [Pipeline] echo [Pipeline] echo 管理命令: [Pipeline] echo 查看日志: docker logs -f jenkins-demo-app [Pipeline] echo 停止服务: docker-compose -f /opt/cefoc_env_dev/apps/jenkins-demo/docker-compose.yml down [Pipeline] echo 重启服务: docker-compose -f /opt/cefoc_env_dev/apps/jenkins-demo/docker-compose.yml restart [Pipeline] } [Pipeline] // stage [Pipeline] } [Pipeline] // withEnv [Pipeline] } [Pipeline] // withEnv [Pipeline] } [Pipeline] // node [Pipeline] End of Pipeline Finished: SUCCESS (这是我在jenkins流水线上部署我自己的代码后给出的信息)
10-15
### Docker 镜像构建失败(网络超时) 在 Jenkins 流水线部署代码时,Docker 镜像构建失败且提示网络超时,可能是由于网络不稳定、镜像源配置问题等原因导致。可尝试以下解决办法: - **检查网络连接**:确保 Jenkins 服务器网络稳定,可通过 `ping` 命令测试网络连通性,例如 `ping www.google.com`。 - **更换镜像源**:修改 Docker 配置文件 `/etc/docker/daemon.json`,添加国内镜像源,如阿里云、网易云等。示例配置如下: ```json { "registry-mirrors": ["https://registry.docker-cn.com"] } ``` 修改完成后,重启 Docker 服务: ```bash sudo systemctl restart docker ``` - **增加构建超时时间**:在 Jenkins 流水线脚本中,适当增加 Docker 构建步骤的超时时间。示例代码如下: ```groovy timeout(time: 30, unit: 'MINUTES') { sh 'docker build -t myimage:latest .' } ``` ### 容器不存在 当 Jenkins 流水线部署代码时提示容器不存在,可能是由于容器未正确创建或已被删除。可尝试以下解决办法: - **检查容器创建步骤**:确保在 Jenkins 流水线脚本中正确执行了容器创建命令。示例代码如下: ```groovy sh 'docker run -d --name mycontainer myimage:latest' ``` - **检查容器状态**:使用 `docker ps -a` 命令查看所有容器的状态,确认容器是否已创建。如果容器已停止,可使用 `docker start mycontainer` 命令启动容器。 - **清理 Docker 环境**:如果容器创建失败,可尝试清理 Docker 环境,删除所有停止的容器和无用的镜像。示例命令如下: ```bash docker rm $(docker ps -aq) docker rmi $(docker images -q) ``` ### 健康检查失败 健康检查失败可能是由于应用程序本身的问题、配置错误或资源不足等原因导致。可尝试以下解决办法: - **检查应用程序日志**:查看容器的日志信息,定位健康检查失败的具体原因。示例命令如下: ```bash docker logs mycontainer ``` - **调整健康检查配置**:在 Dockerfile 或 Docker 启动命令中,调整健康检查的配置参数,如检查间隔、超时时间等。示例 Dockerfile 配置如下: ```Dockerfile HEALTHCHECK --interval=5s --timeout=3s \ CMD curl -f http://localhost/ || exit 1 ``` - **检查资源使用情况**:确保容器有足够的资源(如 CPU、内存等)运行应用程序。可使用 `docker stats` 命令查看容器的资源使用情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值