【问题标题】:BitBucket Pipeline cannot find container after ssh into DigitalOcean DropletBitBucket Pipeline 在 ssh 进入 DigitalOcean Droplet 后找不到容器
【发布时间】:2019-07-14 13:38:54
【问题描述】:

这是我的代码

- 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 进入我的 droplet 并检查,gvcontainer 在那里。

请告诉我任何可能的原因。 谢谢

【问题讨论】:

    标签: docker bitbucket digital-ocean bitbucket-pipelines


    【解决方案1】:

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

    您有几个选项,其中一个是我在回答您的其他问题时概述的(将命令作为参数传递给 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") 执行它。

    【讨论】:

    • 谢谢吉姆,我认为你是对的。虽然我在 Bitbucket 上的所有免费构建时间都用完了,但我必须在下个月确认。
    • 嗨,Jim,因为我的 BitBucket 免费管道时间已用完。我编写了一个 .bat 文件,其中包含:ssh -i /path/to/key user@host "command1 && command2"。但是,它仍然抛出错误:没有这样的容器:gvcontainer。请帮忙
    猜你喜欢
    • 1970-01-01
    • 2020-04-10
    • 1970-01-01
    • 2020-02-17
    • 1970-01-01
    • 2019-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多