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

BitBucket Pipeline cannot find container after ssh into DigitalOcean Droplet

这是我的代码

- 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 droplet,但是出于某种原因(我想,输入 "docker ps" 太快了。应该等几秒钟,但我只是不知道如何推迟操作)它找不到容器。

所以我手动 ssh 进入我的 Droplet 并检查,gvcontainer 就在那里。

有什么可能的原因请赐教。 谢谢

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

您有多种选择,我在回答您的其他问题时概述了其中一种(将命令作为参数传递给 SSH,如 ssh -i /path/to/key user@host "command1 && command2" 中所示)。另一种选择是在 droplet 上放置一个脚本来执行您想要的所有操作,并让 Pipelines 通过 SSH (ssh -i /path/to/key user@host "./do-all-the-things.sh") 执行它。