首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在bitbucket管道部署步骤中使用AWS ECS停靠器上下文

无法在bitbucket管道部署步骤中使用AWS ECS停靠器上下文
EN

DevOps用户
提问于 2021-08-11 03:58:47
回答 1查看 274关注 0票数 1

我试图在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

代码语言:javascript
复制
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。

代码语言:javascript
复制
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输出

代码语言:javascript
复制
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管道输出所示。

代码语言:javascript
复制
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                                                      
EN

回答 1

DevOps用户

发布于 2021-08-12 01:39:42

我在这个github问题上找到了答案

https://github.com/docker/cli/issues/1809

如果设置了DOCKER_HOST环境变量,则忽略当前上下文设置。

Bitbucket将此环境变量设置为默认上下文,这意味着我无法交换停靠器上下文。

一旦我添加了取消设置DOCKER_HOST的命令,上下文切换就成功了,对接者的撰写就像预期的那样工作了。

票数 2
EN
页面原文内容由DevOps提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://devops.stackexchange.com/questions/14486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档