You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Docker部署的Jenkins访问宿主系统并重建ASP.NET Core容器

前置配置修正(解决两个核心前提问题)
  • 首先修改你的docker-compose.yml中Jenkins服务的配置,挂载两个关键路径,从根源解决代码无法同步到宿主机、Jenkins无法操作宿主机容器的问题:
services:
  jenkins:
    # 原有配置(镜像、端口、环境变量等)全部保留
    volumes:
      # 挂载宿主机Docker套接字,让Jenkins容器内可以直接调用宿主机Docker命令
      - /var/run/docker.sock:/var/run/docker.sock
      # 挂载Jenkins工作目录到宿主机固定路径,拉取的代码会直接落到宿主机文件系统
      - ./jenkins_home:/var/jenkins_home
      # 可选:如果你的ASP.NET Core的docker-compose.yml单独存放在宿主机指定目录,可额外挂载方便调用
      - ./aspnet_project:/opt/aspnet_project
    # 配置运行用户避免Docker操作权限报错,也可配置为和宿主机docker组gid一致的普通用户
    user: root
  • 进入Jenkins容器安装Docker客户端和docker-compose工具,保证容器内可以正常执行Docker相关命令:
    Debian/Ubuntu基础镜像执行:apt update && apt install -y docker.io docker-compose-plugin
    Alpine基础镜像执行:apk add docker docker-cli-compose
流水线配置方案

你已完成的拉取代码逻辑无需修改,只需要新增镜像构建、容器重启两个阶段即可,参考Jenkinsfile配置如下:

pipeline {
  agent any
  stages {
    stage('拉取代码') {
      steps {
        // 你已有的Git拉取逻辑直接保留即可,代码会自动同步到宿主机的./jenkins_home/workspace/你的流水线名目录下
        git url: '你的GitHub ASP.NET Core仓库地址', branch: 'main'
      }
    }
    stage('构建ASP.NET Core镜像') {
      steps {
        sh '''
          // 切换到代码根目录,确保目录下存在ASP.NET Core对应的Dockerfile和docker-compose.yml
          cd /var/jenkins_home/workspace/你的流水线名
          // 构建新镜像,--no-cache参数可选,避免缓存导致代码更新不生效
          docker-compose build aspnet-core
        '''
      }
    }
    stage('重启ASP.NET Core容器') {
      steps {
        sh '''
          cd /var/jenkins_home/workspace/你的流水线名
          // 仅重启ASP.NET Core容器,不会影响MySQL、Jenkins其他正在运行的容器
          docker-compose up -d --no-deps aspnet-core
          // 可选:清理旧悬空镜像释放磁盘空间
          docker image prune -f
        '''
      }
    }
  }
}
注意事项
  • 建议将ASP.NET Core项目的Dockerfile和对应的docker-compose.yml提交到代码仓库根目录,拉取代码后可直接调用构建,无需额外复制文件
  • 若你的ASP.NET Core的docker-compose.yml存放在宿主机其他目录,只需要在构建阶段前新增一步代码复制操作:cp -r /var/jenkins_home/workspace/你的流水线名/* /opt/aspnet_project/,再切换到对应目录执行构建命令即可
  • 如果执行Docker命令提示权限报错,检查宿主机/var/run/docker.sock的权限,或者将Jenkins运行用户加入宿主机的docker用户组即可解决

内容的提问来源于stack exchange,提问作者sajjad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 03:24:08