【问题标题】:How to deploy local Api docker-compose project to remote host via SSH?如何通过 SSH 将本地 Api docker-compose 项目部署到远程主机?
【发布时间】:2020-09-07 20:03:36
【问题描述】:

我已经开发了使用docker-compose up 开始的Node.js API 项目。现在我试图通过 ssh 将项目部署到远程 Ubuntu 主机。我还在远程主机上安装了node.jsdocker

问题是:如何通过 ssh 和 docker-compose 将本地项目部署到主机?
正确的顺序是什么?我需要为此创建Dockerfile,还是可以使用docker-compose.yml 来创建?

提前致谢。

【问题讨论】:

  • 如果你现在没有 Dockerfile,你实际上有什么?如果您还没有构建自定义映像,那么在远程主机上安装 Node 而不是 Docker 可能是最简单的。
  • @DavidMaze 目前我使用 docker-compose 在本地运行项目。作为一个选项,确保我可以在没有 docker 的情况下运行 node.js 项目,但我想了解它应该如何与 docker 一起使用并希望以这种方式解决它。
  • 我不熟悉 docker world 并试图弄清楚下一步应该是什么。
  • Docker 的Containerizing an application 教程可能是很好的第一步。如果你只是使用 Docker “所以你不必安装 Node”,这可能是一个比直接使用 Node 更难的开发和部署环境。
  • 您不能将您的docker-compose.yml 和相关文件移动到远程主机,然后在那里运行docker-compose 吗?

标签: docker ssh docker-compose


【解决方案1】:

如果您想从本地主机部署到远程 Docker 主机,有几个选项。

您可以将远程 Docker 守护程序配置为接受 TCP 连接,并使用 SSL 证书在两个方向上进行身份验证。这可能是设置远程访问的推荐方式,因为 Docker 客户端本身就支持它。您可以在 Docker 的“Protect the Docker daemon socket”文档中了解更多相关信息。

第二种选择是通过ssh 隧道将 Docker 套接字从远程主机转发到本地主机。如果你像这样ssh进入远程主机...

ssh -L /tmp/docker.sock:/var/run/docker.sock me@remotehost

...然后您可以使用本地主机上的/tmp/docker.sock 套接字访问远程 Docker 守护程序。您需要像这样设置DOCKER_HOST 环境变量:

export DOCKER_HOST=unix:///tmp/docker.sock

docker-compose 也可以识别 DOCKER_HOST 环境变量。

当然,这仅在您连接到远程主机时才有效。


例如:

bash-5.0$ docker ps
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
bash-5.0$ ssh -nN -L /tmp/docker.sock:/var/run/docker.sock docker.local &
[1] 1363146
bash-5.0$ export DOCKER_HOST=unix:///tmp/docker.sock
bash-5.0$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
10924fc5f455        registry:2          "/entrypoint.sh /etc…"   2 weeks ago         Up 19 hours         0.0.0.0:5000->5000/tcp   registry

(这里我将ssh 连接放在后台,以便我可以继续在本地主机上工作。当然,您可以只使用第二个终端进行ssh 连接。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-28
    • 1970-01-01
    • 2021-07-12
    • 1970-01-01
    • 1970-01-01
    • 2012-05-16
    • 2022-10-02
    相关资源
    最近更新 更多