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

GitHub Actions构建Web应用Docker镜像失败及版本标签问题咨询

问题1:GitHub Actions构建Docker时找不到dist目录的路径修正

问题根源

Dockerfile中使用了绝对路径/dist/app-name,Docker构建时会将其解析为系统根目录下的dist路径,而非项目根目录下的构建产物目录。本地构建正常是因为你在项目根目录执行构建,而GitHub Actions的构建上下文同样是项目根,但绝对路径的写法错误导致无法找到目标目录。

修正方案

修改Dockerfile中的COPY路径为相对路径(去掉开头的斜杠):

FROM nginx:1.17.1-alpine
COPY nginx.conf /etc/nginx/nginx.conf
COPY dist/app-name /usr/share/nginx/html

可选验证步骤

可以在GitHub Actions的npm run build-prod步骤后添加目录检查,确认dist目录生成:

- name: Verify Dist Directory
  run: ls -la dist/

问题2:构建带版本标签的Docker镜像并保留latest

步骤1:配置Workflow触发条件

让Workflow仅在推送Git版本标签时触发(比如标签格式为v1.0.0),修改Workflow开头:

name: Build and Push Docker Image
on:
  push:
    tags:
      - 'v*' # 匹配v开头的版本标签,如v1.0.0、v2.1.3

步骤2:构建双标签镜像

利用GitHub Actions内置变量github.ref_name获取当前推送的标签名,同时为镜像打latest和版本标签:

- name: Build Docker Image
  run: |
    docker build . \
      --tag ${{ secrets.REPO }}:latest \
      --tag ${{ secrets.REPO }}:${{ github.ref_name }}

步骤3:推送双标签镜像

修改推送步骤,同时推送两个标签的镜像:

- name: Push Docker Images
  run: |
    docker push ${{ secrets.REPO }}:latest
    docker push ${{ secrets.REPO }}:${{ github.ref_name }}

注意事项

  • 确保REPO、USERNAME、PWD已在GitHub仓库的Secrets中配置;
  • 如果需要在普通代码推送时也构建latest镜像,可以保留原有push触发规则,同时添加标签触发规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 06:49:06