docker/build-push-action@v4本地正常但GitHub Action中资产未复制
问题原因分析
docker/build-push-action@v4 默认采用Git仓库上下文进行构建,只会包含仓库中被Git追踪的文件。你在GitHub Action中通过touch assets/foo.js创建的文件属于未被Git追踪的临时文件,不会被纳入构建上下文,因此Docker的COPY assets assets指令无法复制该文件到镜像中。
解决方案
修改docker/build-push-action@v4的配置,指定使用本地工作目录作为构建上下文,同时开启镜像加载(确保构建后的镜像能在本地Docker环境中访问):
- name: Build target uses: docker/build-push-action@v4 with: context: . # 指定当前工作目录为构建上下文 load: true # 将构建的镜像加载到本地Docker环境 target: node_builder tags: node_builder:latest
额外验证点
如果问题仍然存在,可以尝试禁用构建缓存,强制重新执行COPY步骤:
- name: Build target uses: docker/build-push-action@v4 with: context: . load: true target: node_builder tags: node_builder:latest no-cache: true # 禁用构建缓存
内容的提问来源于stack exchange,提问作者gremo
相关产品推荐
相关产品推荐

