如何在GitHub Actions YAML工作流中从build目录构建并推送Docker镜像以部署TypeScript Express服务器至Cloud Run?
如何在GitHub Workflows中指定从build目录执行Docker构建与推送?
我明白你的需求——你已经通过build脚本把所有部署需要的文件都整理到build目录里了,现在要让GitHub Workflows里的Docker命令针对这个目录来构建镜像对吧?有两种简单的方法可以实现,你可以根据自己的偏好选择:
方法1:直接指定Docker构建上下文为build目录
Docker的build命令支持直接传入目标目录作为构建上下文,你只需要把原命令里的.改成./build就行,不用改动工作目录。修改后的步骤如下:
- name: Build and tag image run: |- docker build ./build --tag "gcr.io/$CLOUD_RUN_PROJECT_ID/$REPO_NAME:$GITHUB_SHA"
这种方法的好处是不需要调整步骤的工作路径,其他命令依然在仓库根目录执行,适合只需要Docker命令针对build目录的场景。
方法2:设置步骤的工作目录为build
如果你希望整个Build and tag image步骤的所有命令都在build目录下执行,可以用GitHub Actions的working-directory参数来指定工作路径,这样docker build .就会默认使用当前的build目录作为上下文了:
- name: Build and tag image working-directory: ./build run: |- docker build . --tag "gcr.io/$CLOUD_RUN_PROJECT_ID/$REPO_NAME:$GITHUB_SHA"
这种方式更适合后续还有其他需要在build目录下执行的操作的场景,能保持步骤的连贯性。
额外提醒
别忘了在执行Docker构建之前,先运行你的build脚本生成build目录哦!你需要在工作流里添加一个步骤来执行构建:
- name: Install dependencies and build project run: npm run build
把这个步骤放在Enable the necessary APIs and enable docker auth步骤之前,确保build目录已经生成完毕。
内容的提问来源于stack exchange,提问作者tryingToBeBetter




