GitHub Actions构建Docker镜像因用户名大写报错如何修改yml配置
解决方案
核心修改逻辑是将镜像路径中的用户名统一转为全小写,符合ghcr.io的命名规则,以下是可直接使用的修正后配置:
name: Docker CI/CD on: push: branches: [ main ] env: # 直接用GitHub内置lower函数将用户名转为全小写,不需要额外步骤处理 DOCKER_IMAGE: ghcr.io/${{ lower(github.actor) }}/ossp_flaskapp VERSION: ${{ github.sha }} NAME: ossprac_container jobs: build: name: Build runs-on: ubuntu-latest steps: - name: Check out source code uses: actions/checkout@v2 - name: Set up docker buildx id: buildx uses: docker/setup-buildx-action@v1 - name: Cache docker layers uses: actions/cache@v2 with: path: /tmp/.buildx-cache key: ${{ runner.os }}-buildx-${{ env.VERSION }} restore-keys: | ${{ runner.os }}-buildx- - name: Login to ghcr uses: docker/login-action@v1 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GHCR_TOKEN }} - name: Build and push id: docker_build uses: docker/build-push-action@v2 with: builder: ${{ steps.buildx.outputs.name }} push: true tags: ${{ env.DOCKER_IMAGE }}:latest deploy: needs: build name: Deploy runs-on: [ self-hosted, label-go ] steps: - name: Login to ghcr uses: docker/login-action@v1 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GHCR_TOKEN }} - name: Docker run run: | docker stop ${{ env.NAME }} && docker rm ${{ env.NAME }} && docker rmi ${{ env.DOCKER_IMAGE }}:latest docker run -d -p 80:80 --name ossprac_container --restart always ${{ env.DOCKER_IMAGE }}:latest
关键修改说明
- 原配置全局env中的
DOCKER_IMAGE变量直接引用了带大写的${{ github.actor }},修改为${{ lower(github.actor) }}调用GitHub Actions内置的小写转换函数,自动将用户名转为全小写,满足ghcr的命名要求 - 移除了原有缩进错误的小写转换步骤,使用内置函数方案更简洁,不会出现缩进语法错误
- 登录ghcr时的
username字段不需要修改,GitHub本身支持大写用户名验证,仅镜像路径需要全小写
内容的提问来源于stack exchange,提问作者SEOI HONG
相关产品推荐
相关产品推荐

