Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在docker compose远程github构建中指定提交_Git_Docker_Github_Build_Docker Compose - Fatal编程技术网

如何在docker compose远程github构建中指定提交

如何在docker compose远程github构建中指定提交,git,docker,github,build,docker-compose,Git,Docker,Github,Build,Docker Compose,我想在github上的远程项目中使用Dockerfiles构建服务。这是针对端到端测试框架的,因此我需要能够指定我希望它构建的特定提交。我在试图弄清楚如何执行特定的提交时遇到了很多困难 我有一个docker compose文件,看起来像这样: version: '3' services: web: build: https://${GITHUB_ACCESS}:@github.com/mycompany/web.git#${COMMIT_SHA} 如果我省略#${COMMIT\u

我想在github上的远程项目中使用
Dockerfiles
构建服务。这是针对端到端测试框架的,因此我需要能够指定我希望它构建的特定提交。我在试图弄清楚如何执行特定的提交时遇到了很多困难

我有一个docker compose文件,看起来像这样:

version: '3'
services:
  web:
    build: https://${GITHUB_ACCESS}:@github.com/mycompany/web.git#${COMMIT_SHA}
如果我省略
#${COMMIT\u SHA}
,上述方法就可以了。不幸的是,如果我为我关心的特定提交包含sha,则会出现以下错误:

ERROR: error fetching: error: no such remote ref <commit sha>
: exit status 128
错误:错误获取:错误:没有这样的远程引用
:退出状态128

我确信sha是存在的,我已经和其他一些人尝试过,只是为了确定。我这里的语法是错误的,还是docker compose不支持引用特定的提交?

当您得到err
错误:错误获取:错误:没有这样的远程引用:退出状态128
时,您肯定有语法问题。在你的情况下,你几乎没有可能的原因

  • 未设置环境变量
  • GIT\u COMMIT\u SHA
    设置为无效的
    SHA

    我确信sha是存在的

    再检查一下

您可以在Git URL的片段部分中配置Git URL,片段部分由冒号分隔
。第一部分表示Git将签出的引用,它可以是分支、标记或提交SHA。因此,yes
docker compose
支持引用特定提交。第二部分表示存储库中用作构建上下文的子目录。只有当docker文件不在存储库根目录中时,才需要这样做。有效的Git URL模式可以是Git本机认为有效的任何内容。请参阅其核心部分中的内容以供参考

  • 如果您的
    Dockerfile
    不在存储库根目录中,您将得到
    错误:找不到指定的Dockerfile:Dockerfile
我以存储库为例。此存储库中有多个docker文件,因此假设我们希望基于存储库子目录
stable/alpine
中的
Dockerfile
构建映像

示例1

在本例中,让我们从
master
branch构建docker映像

版本:“3”
服务:
网状物:
图片:网络:最新
建造:https://github.com/nginxinc/docker-nginx.git#master:stable/alpine
示例1-基于特定提交构建它

我添加了
.env
文件,而变量很可能是在持续集成环境中设置的

GIT_COMMIT_SHA=d377983a14b214fcae4b8e34357761282aca788f
并将我们的
docker compose.yaml
更改为

version: '3'
services:
  web:
    image: web:${GIT_COMMIT_SHA}
    build: https://github.com/nginxinc/docker-nginx.git#${GIT_COMMIT_SHA}:stable/alpine

这里生成的
build:
url应该是
https://github.com/nginxinc/docker-nginx.git#d377983a14b214fcae4b8e34357761282aca788f:stable/alpine

文档只提到使用github repos作为构建上下文的构建使用分支和标记。也许值得一试在git中标记特定的提交,并将其用作引用,而不是提交SHA。查看此处了解更多信息:此处:URL是否在浏览器中工作?