mel*_*r55 9 git build github docker docker-compose
我想Dockerfiles在github上找到的远程项目中使用构建服务.这是一个端到端的测试框架,所以我需要能够指定我想要构建的特定提交.我在尝试弄清楚如何提取特定提交时遇到了很多困难.
我有一个docker compose文件,看起来像这样:
version: '3'
services:
web:
build: https://${GITHUB_ACCESS}:@github.com/mycompany/web.git#${COMMIT_SHA}
Run Code Online (Sandbox Code Playgroud)
如果我省略,上述工作正常#${COMMIT_SHA}.不幸的是,如果我为我所关心的特定提交包含sha,我会收到以下错误:
ERROR: error fetching: error: no such remote ref <commit sha>
: exit status 128
Run Code Online (Sandbox Code Playgroud)
我确信沙存在,我已经和其他几个人一起尝试过以确定.我在这里得到的语法错误,或者docker-compose不支持引用特定的提交?
当你犯错时ERROR: error fetching: error: no such remote ref <commit sha>: exit status 128,那么你肯定遇到了语法问题。就您的情况而言,可能的原因很少。
GITHUB_ACCESS|| GIT_COMMIT_SHA环境变量没有设置GIT_COMMIT_SHA设置为无效sha值。
我确信煞存在
只需仔细检查
您可以在其片段部分中配置 Git URL,并用冒号分隔:。第一部分表示 Git 将签出的引用,可以是分支、标签或提交 SHA。所以是的,docker-compose确实支持引用特定的提交。第二部分表示存储库内将用作构建上下文的子目录。仅当您的 docker 文件不在存储库根目录中时才需要这样做。有效的 Git URL 模式可以是 Git 本身认为有效的任何内容。请参阅其核心中的此文件以供参考。
Dockerfile不在存储库根目录中,你会得到ERROR: Cannot locate specified Dockerfile: Dockerfile我使用nginxinc/docker-nginx存储库作为示例。此存储库中有多个 docker 文件,因此假设我们要基于Dockerfile存储库子目录中的找到的内容构建映像stable/alpine
实施例1
master在此示例中,让我们从分支构建 docker 镜像
version: '3'
services:
web:
image: web:latest
build: https://github.com/nginxinc/docker-nginx.git#master:stable/alpine
Run Code Online (Sandbox Code Playgroud)
示例 1 - 根据特定提交构建它
我添加.env文件,而您的变量很可能是在持续集成环境中设置的。
GIT_COMMIT_SHA=d377983a14b214fcae4b8e34357761282aca788f
Run Code Online (Sandbox Code Playgroud)
并将我们的更改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
Run Code Online (Sandbox Code Playgroud)
这里生成的build:网址应该是https://github.com/nginxinc/docker-nginx.git#d377983a14b214fcae4b8e34357761282aca788f:stable/alpine
| 归档时间: |
|
| 查看次数: |
1318 次 |
| 最近记录: |