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

GitHub Actions自托管Runner构建Docker镜像时找不到Dockerfile

问题解决步骤

1. 添加代码拉取步骤(核心修复)

你的GitHub工作流缺少代码同步步骤,自托管Runner不会自动拉取仓库代码,这是Docker找不到Dockerfile的直接原因。修改后的工作流如下:

name: Build and launch playground
on:
  push:
    branches:
      - main
jobs:
  create_image_and_run_it:    
    runs-on: self-hosted
    steps:
      - name: 拉取仓库代码
        uses: actions/checkout@v4
      
      - name: 构建Docker镜像
        run: sudo docker build -t playground -f Dockerfile ./
      
      - name: 清理旧容器(避免端口冲突)
        run: sudo docker stop playground || true && sudo docker rm playground || true
      
      - name: 启动新容器
        run: sudo docker run -d --name playground -p 8080:80 playground

2. 修复Dockerfile中的拼写错误

Dockerfile里引用的Playground.sln与仓库根目录实际的解决方案文件Spielplatz.sln不符,会导致dotnet restore失败。修改Dockerfile对应行:

FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /app

COPY Spielplatz.sln ./  # 替换为仓库实际的解决方案文件名
COPY ./Playground.WebApp/Playground.WebApp.csproj ./Playground.WebApp

RUN dotnet restore
COPY . ./
RUN dotnet publish -c Release -o out

FROM nginx:1.23.0-alpine
WORKDIR /app
EXPOSE 8080
COPY nginx.conf /etc/nginx/nginx.conf
COPY --from=build /app/out/wwwroot /usr/share/nginx/html

3. 额外优化建议

  • 给Runner用户添加Docker权限,避免每次用sudo:
    sudo usermod -aG docker $USER
    
    执行后重启GitHub Runner服务即可生效。
  • 验证树莓派的Docker服务状态:
    sudo systemctl status docker
    
  • 检查8080端口是否被占用:
    sudo lsof -i :8080
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 08:07:29