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"
) 执行它。
这是我的代码
- 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"
) 执行它。