SSH进入DigitalOcean Droplet后,BitBucket管道找不到容器

时间:2019-07-14 13:38:54

标签: docker bitbucket digital-ocean bitbucket-pipelines

这是我的代码

- step:
    name: SSH to Digital Ocean and update docker image
    script:
      - head ~/.ssh/config
      - ssh -i ~/.ssh/config root@XXX.XXX.XXX.XXX
      - docker ps
      - docker rm -f gvcontainer
      - docker image rm -f myrepo/myimage:tag
      - docker pull myrepo/myimage:tag
      - docker run --name gvcontainer -p 12345:80 -d=true --restart=always myrepo/myimage:tag
    services:
      - docker

在这里,我可以看到Pipeline ssh已成功放入我的DO液滴中,但是由于某些原因(我想键入“ docker ps”太快了。它应该等待几秒钟,但是我只是不这样做”不知道如何推迟操作)找不到容器。

所以我手动将其放入ssh并检查是否存在gvcontainer。

enter image description here

请以任何可能的原因启发我。 谢谢

1 个答案:

答案 0 :(得分:1)

SSH会话后列出的命令不在远程系统上运行-它们正在管道中运行。由于管道容器没有要删除的gvcontainer,因此会返回该错误。

您有几种选择,我在回答其他问题时概述了其中一种(如ssh -i /path/to/key user@host "command1 && command2"中所述,将命令作为SSH的参数传递)。另一种选择是将脚本放在可以执行所有所需操作的小程序上,然后使管道通过SSH(ssh -i /path/to/key user@host "./do-all-the-things.sh")执行该脚本。