自定义GitHub Action内层Docker容器无法访问调用方仓库文件如何解决
问题原因
GitHub Action 运行时会自动将调用方仓库的根目录挂载到外层容器的 ${GITHUB_WORKSPACE} 环境变量对应路径(默认是 /github/workspace),你当前启动内层容器时没有将这个目录挂载到内层容器,所以内层容器只能看到自身镜像内的文件。
解决方案
修改外层 entrypoint.sh 中的 docker run 命令,添加目录挂载参数和工作目录指定参数即可:
#!/bin/sh -l ALPINE_VERSION=$1 cd /docker-action docker build -t docker-action --build-arg alpine_version="$ALPINE_VERSION" . # 新增挂载参数,把仓库目录同步到内层容器 docker run -v "${GITHUB_WORKSPACE}":"${GITHUB_WORKSPACE}" -w "${GITHUB_WORKSPACE}" docker-action
参数说明
-v "${GITHUB_WORKSPACE}":"${GITHUB_WORKSPACE}":将外层容器中已经能访问的仓库根目录,映射到内层容器的同一路径-w "${GITHUB_WORKSPACE}":指定内层容器启动后的默认工作目录为仓库根目录,进入容器后执行ls就可以直接看到所有仓库文件
如果遇到内层容器读写仓库文件的权限问题,可以在 docker run 中额外添加 --user $(id -u):$(id -g) 参数,用和外层容器一致的用户权限启动内层容器。
内容的提问来源于stack exchange,提问作者Alex F
相关产品推荐
相关产品推荐

