Dockerfile:Jenkins+jdk17+dotnet8

近日,重新构建了一套基于Jenkind+jdk17+dotnet8的镜像构建脚本,为防止后续使用无构建脚本,特做一记录,

1.构建脚本

# 使用官方 Jenkins LTS 镜像
FROM jenkins/jenkins:2.508-jdk17

# 切换到 root 用户操作
USER root

# 删除旧软件源配置
RUN rm -rf /etc/apt/sources.list /etc/apt/sources.list.d/*

# 写入阿里云 Debian 12 镜像源
RUN echo "deb https://mirrors.aliyun.com/debian/ bookworm main non-free non-free-firmware" > /etc/apt/sources.list && \
    echo "deb https://mirrors.aliyun.com/debian/ bookworm-updates main non-free non-free-firmware" >> /etc/apt/sources.list && \
    echo "deb https://mirrors.aliyun.com/debian-security/ bookworm-security main non-free non-free-firmware" >> /etc/apt/sources.list

# 安装基础工具和依赖
RUN apt-get update && \
    apt-get upgrade -y && \
    apt-get install -y --no-install-recommends \
        curl \
        git \
        nano \
        wget \
        gnupg \
        ca-certificates \
        openssh-client  # 新增 SSH 客户端

# 添加 Microsoft 包签名密钥和仓库
RUN wget https://packages.microsoft.com/config/debian/12/packages-microsoft-prod.deb -O packages-microsoft-prod.deb && \
    dpkg -i packages-microsoft-prod.deb && \
    rm packages-microsoft-prod.deb

# 更新并安装 .NET 8 SDK
RUN apt-get update && \
    apt-get install -y --no-install-recommends \
        dotnet-sdk-8.0=8.0.402-1

# 验证 .NET 版本
RUN dotnet --version

# 创建 SSH 密钥目录并生成密钥(无密码)
RUN mkdir -p /var/jenkins_home/.ssh && \
    ssh-keygen -t rsa -b 4096 -f /var/jenkins_home/.ssh/id_rsa -N "" && \
    chown -R jenkins:jenkins /var/jenkins_home/.ssh && \
    chmod 700 /var/jenkins_home/.ssh && \
    chmod 600 /var/jenkins_home/.ssh/id_rsa && \
    chmod 644 /var/jenkins_home/.ssh/id_rsa.pub

# 可选:预添加 GitHub 到 known_hosts
RUN ssh-keyscan -t rsa github.com >> /var/jenkins_home/.ssh/known_hosts && \
    chown jenkins:jenkins /var/jenkins_home/.ssh/known_hosts && \
    chmod 644 /var/jenkins_home/.ssh/known_hosts

# 清理 APT 缓存
RUN apt-get clean && \
    rm -rf /var/lib/apt/lists/* \
    rm -rf /usr/share/dotnet/sdk/NuGetFallbackFolder

# 切换回 Jenkins 用户
USER jenkins

# 设置环境变量
ENV DOTNET_ROOT=/usr/share/dotnet
ENV PATH="$PATH:/usr/share/dotnet"

# 保留 Jenkins 原始入口点
ENTRYPOINT ["/usr/bin/tini", "--", "/usr/local/bin/jenkins.sh"]

2.镜像构建

docker build -t jenkins-custom:2.508-jdk17 .

3.容器构建

docker run -d \
--restart=always \
-uroot -uroot \
--name jenkins \
-v /var/run/docker.sock:/var/run/docker.sock \
-v $(which docker):/usr/bin/docker \
-v /home/bizuser/soft/docker_jenkins:/var/jenkins_home \
-v /bin/sh:/bin/sh \
-p 12000:8080 \
-p 12001:50000 \
-v /etc/localtime:/etc/localtime \
jenkins-custom:2.508-jdk17 \

4.安装验证

docker ps
docker exec -it jenkins /bin/bash

容器验证

dotnet验证

 jdk验证

 5.启动配置

http://localhost:12000/login?from=%2F

提取用户初始密码

docker exec -it jenkins /bin/bash

cat /var/jenkins_home/secrets/initialAdminPassword

点击【安装推荐的插件】

至此,镜像构建-安装-运行-验证-配置过程基本完成。

6.原版镜像附件:

镜像拉取

docker pull jenkins/jenkins:2.508-jdk17

容器安装

docker run -d \

--restart=always \

-uroot -uroot \

--name jenkins \

-v /var/run/docker.sock:/var/run/docker.sock \

-v $(which docker):/usr/bin/docker \

-v /home/bizuser/soft/docker_jenkins:/var/jenkins_home \

-v /bin/sh:/bin/sh \

-p 12000:8080 \

-p 12001:50000 \
-v /etc/localtime:/etc/localtime \

jenkins/jenkins:2.508-jdk17 \

 

posted @ 2025-05-06 12:17  李文学  阅读(51)  评论(0)    收藏  举报