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