Docker compose 如何在bitbucket管道中使用docker compose部署到远程主机?

Docker compose 如何在bitbucket管道中使用docker compose部署到远程主机?,docker-compose,bitbucket,bitbucket-pipelines,Docker Compose,Bitbucket,Bitbucket Pipelines,目前我在bitbucket中有一个git项目,它有一个停靠的web应用程序。随后,我创建了一个bitbucket-pipelines.yml文件,该文件概述了我的整个部署过程 我所有的CI都工作得很好,我可以构建、测试并将我的产品映像推送到dockerhub注册表 现在进入最后一个阶段,部署。这就是事情变得一团糟的地方 以下是我的管道配置的部署部分: image: atlassian/default-image:2 pipelines: branches: master:

目前我在bitbucket中有一个git项目,它有一个停靠的web应用程序。随后,我创建了一个bitbucket-pipelines.yml文件,该文件概述了我的整个部署过程

我所有的CI都工作得很好,我可以构建、测试并将我的产品映像推送到dockerhub注册表

现在进入最后一个阶段,部署。这就是事情变得一团糟的地方

以下是我的管道配置的部署部分:

image: atlassian/default-image:2

pipelines:
  branches:
    master:

     - step:
          trigger: manual
          deployment: production
          name: Deploy
          services:
            - docker
          script:
            - export IMAGE_VERSION=$BITBUCKET_BUILD_NUMBER
            - export DOCKER_HOST=ssh://root@$IP_ADDRESS
            - docker login --username $DOCKER_HUB_USERNAME --password $DOCKER_HUB_PASSWORD
            - ./cd.sh pull
            - ./cd.sh deploy
            - ./cd.sh migrate
            - ./cd.sh clean
以下是生成的错误:

    + ./cd.sh pull
[240] Failed to execute script docker-compose
Traceback (most recent call last):
  File "site-packages/docker/api/client.py", line 151, in __init__
NameError: name 'SSHAdapter' is not defined
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "bin/docker-compose", line 6, in <module>
  File "compose/cli/main.py", line 71, in main
  File "compose/cli/main.py", line 124, in perform_command
  File "compose/cli/command.py", line 42, in project_from_options
  File "compose/cli/command.py", line 123, in get_project
  File "compose/cli/command.py", line 94, in get_client
  File "compose/cli/docker_client.py", line 127, in docker_client
  File "site-packages/docker/api/client.py", line 156, in __init__
docker.errors.DockerException: Install paramiko package to enable ssh:// support
+。/cd.sh拉力
[240]无法执行脚本docker compose
回溯(最近一次呼叫最后一次):
文件“site packages/docker/api/client.py”,第151行,in__init__
NameError:未定义名称“SSHAdapter”
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
文件“bin/docker compose”,第6行,在
main中第71行的文件“compose/cli/main.py”
文件“compose/cli/main.py”,第124行,在perform_命令中
文件“compose/cli/command.py”,第42行,在项目\u from\u options中
get_项目中第123行的文件“compose/cli/command.py”
get_client中第94行的文件“compose/cli/command.py”
docker_client中第127行的文件“compose/cli/docker_client.py”
文件“site packages/docker/api/client.py”,第156行,in__init__
docker.errors.DockerException:安装paramiko包以启用ssh://支持
我目前已正确设置了SSH密钥,因此我知道这不是问题所在。我在连接到我的登台环境的本地机器上测试了这个功能,它工作得很好

我猜这是使用默认atlassian图像的一个限制?它可能是在使用旧版本的docker或其他东西

我的远程机器基本上有docker运行,只有它需要的容器运行我的服务。它没有安装git项目或其他任何东西

有人知道如何使用bitbucket管道解决这个问题吗

如果没有,对更好的部署策略有何建议

我正在使用docker compose v3.3


谢谢

很抱歉重播延迟了10个月,我认为你是对的。不过,我建议将ssh放到服务器上,然后使用类似的方法从bitbucket本身执行ssh

- step:
          name: 'Deploying to QA'
          deployment: qa
          script:
          - pipe: atlassian/ssh-run:0.2.2
            variables:
              SSH_USER: '$SSH_USER'
              SERVER: '$SSH_SERVER'
              COMMAND: "sh ./deploy.sh" 
你为什么不安装Kubernetes呢?你可以安装Rancher之类的东西,它是开源的,有一个CreateGUI界面