我试图在bitbucket管道中添加一个部署步骤,当我在本地进行模拟时,这个步骤会成功地工作,但是在执行bitbucket中的步骤时会失败。
我已经创建了一个简单的码头映像,其中包含了按照https://raw.githubusercontent.com/docker/compose-cli/main/scripts/install/install_linux.sh编写的docker和复合cli。
当我按照位桶调试指令https://support.atlassian.com/bitbucket-cloud/docs/debug-pipelines-locally-with-docker/在本地运行我的“build”对接器映像时,一切都按预期工作,并且我可以连接到AWS对接器上下文,并使用"docker“命令。
但是,当我将更改推送到bitbucket并在bitbucket管道中执行构建步骤时,如果没有找到“复合”命令,构建就会失败。
我已经检查了env,并再次检查了正确的对接器CLI是否已安装,并确保正确的图像正在被拉出。
或者ecs的上下文创建或连接失败了,还是调用了错误的停靠二进制文件?或者其他我不知道的事。
管道yaml
image: build-env:latest
definitions:
steps:
- step: &deploy
name: Deploy this build
deployment: test
- docker context create ecs --from-env deploy
- docker context use deploy
- docker version
- docker compose ps构建-env的dockerfile。
FROM ubuntu:20.04
RUN apt-get update
RUN apt-get install -y python3-pip python3-dev \
&& cd /usr/local/bin \
&& ln -s /usr/bin/python3 python \
&& pip3 install --upgrade pip awscli
RUN apt-get install -y curl docker.io
RUN curl -L https://raw.githubusercontent.com/docker/compose-cli/main/scripts/install/install_linux.sh | sh
CMD ["python3"]bitbucket输出
docker context create ecs --from-env deploy<1s
+ docker context create ecs --from-env deploy
Successfully created ecs context "deploy"
docker context use deploy<1s
+ docker context use deploy
deploy
docker version<1s
+ docker version
Cannot connect to the Docker daemon at tcp://localhost:2375. Is the docker daemon running?
Client:
Cloud integration: 1.0.17
Version: 20.10.7
API version: 1.41
Go version: go1.13.8
Git commit: 20.10.7-0ubuntu1~20.04.1
Built: Wed Aug 4 22:52:25 2021
OS/Arch: linux/amd64
Context: default
Experimental: true
docker compose ps<1s
+ docker compose ps
**docker: 'compose' is not a docker command.**
See 'docker --help'
Build teardown<1s非常奇怪的是,它在本地工作,但在bitbuckets服务器上却失败.有人知道我哪里出错了吗?
最终目标是在AWS上下文中使用"docker组合“来触发ecs集群更新。它在任何地方都能很好地工作,除了在bitbucket环境中。
提前谢谢..。
我设法缩小了问题的范围。似乎失败发生在"docker上下文使用部署“。
上下文正在创建,我可以检查并列出它,但是尝试使用它总是失败的,如下面的bitbucket管道输出所示。
docker context use deploy<1s
+ docker context use deploy
deploy
docker context inspect<1s
+ docker context inspect
[
{
"Name": "default",
"Metadata": {
"StackOrchestrator": "swarm"
},
"Endpoints": {
"docker": {
"Host": "tcp://localhost:2375",
"SkipTLSVerify": false
}
},
"TLSMaterial": {},
"Storage": {
"MetadataPath": "\u003cIN MEMORY\u003e",
"TLSPath": "\u003cIN MEMORY\u003e"
}
}
]
docker context ls<1s
+ docker context ls
NAME TYPE DESCRIPTION DOCKER ENDPOINT KUBERNETES ENDPOINT ORCHESTRATOR
default * moby Current DOCKER_HOST based configuration tcp://localhost:2375 swarm
deploy ecs credentials read from environment 发布于 2021-08-12 01:39:42
我在这个github问题上找到了答案
https://github.com/docker/cli/issues/1809
如果设置了DOCKER_HOST环境变量,则忽略当前上下文设置。
Bitbucket将此环境变量设置为默认上下文,这意味着我无法交换停靠器上下文。
一旦我添加了取消设置DOCKER_HOST的命令,上下文切换就成功了,对接者的撰写就像预期的那样工作了。
https://devops.stackexchange.com/questions/14486
复制相似问题