gpt4 book ai didi

仅使用 SSH key 和 dockerfile 进行部署

转载 作者:IT老高 更新时间:2023-10-28 21:24:02 26 4
gpt4 key购买 nike

请原谅我的开发操作太天真了,但我假设您需要部署到机器上的只是一个正确的 SSH key 、要公开的端口、机器的 IP 地址、登录名和要部署的代码。

那么,是否有任何简单的解决方案可以将代码部署到远程服务器,唯一的输入是 SSH key 、Dockerfile 和代码本身?我认为它可以以确定性(几乎是功能性)的方式设置,其中输入是服务器 IP 地址、登录名,输出是正在运行的服务器。

我尝试在 digital ocean (https://www.digitalocean.com/community/tutorials/how-to-use-the-digitalocean-dokku-application) 上设置 Dokku,这需要 DNS 记录和 git。我不需要那些作为依赖项。

谢谢

最佳答案

如果我正确理解了您的问题,您只需要 scpssh 和几个 shell 脚本即可。

假设您要将代码从 serverA 部署到 serverB

serverB 上,使用 Dockerfile 创建一个目录。另外,创建一个 shell 脚本,我们称之为 build_image.sh,它使用 sudo 运行你的 docker build 命令。

另外,在 serverB 上,创建一个从源代码构建代码的 shell 脚本(如有必要)。

最后,在 serverB 上,创建一个 shell 脚本,它调用您的代码构建脚本、您的 docker 构建脚本,最后运行您的新 docker 镜像。让我们将此脚本称为 do_it_all.sh

确保你chmod 755所有的shell脚本。

现在,在 serverA 上,您有一个包含源代码的目录。 scp 那个目录把serverB 放到带有Dockerfile的目录中。

接下来,从 serverA 使用 ssh 调用 serverB 上的 do_it_all.sh。这将构建您的代码、构建您的镜像并部署一个容器,而无需额外的软件、包、git、DNS 记录等。

如果您愿意,您甚至可以使用 cron 或其他方式自动执行此过程,以便在夜间进行部署,或在其他条件下进行部署。

示例脚本/命令:

服务器B:

build_image.sh:

#!/bin/bash
sudo docker build -t my_image

build_code.sh(可选,根据您的代码调整):

#!/bin/bash
cd /path/to/my/code
./configure
make

do_it_all.sh:

#!/bin/bash
cd /path/to/my/dockerfile
sudo docker stop my_container #stop the old container
sudo docker rm my_container #remove the old container
sudo docker rmi my_image #remove the old image
./build_code.sh #comment out if not needed
./build_image.sh
sudo docker run -d --name my_container my_image

服务器A:

scp -r /path/to/my/code serverB:/path/to/my/dockerfile
ssh serverB '/path/to/my/dockerfile/do_it_all.sh'

应该是这样的。根据您的系统进行调整。

要部署到一个全新的系统,只需在 serverA 上编写一个脚本,使用 ssh 复制在 serverB 上创建必要的目录 ssh serverB 'mkdir/path/to/dockerfile'.接下来,使用 scpDockerfile 和构建脚本以及代码从 serverA 复制到 serverB。然后使用 sshserverAserverB 上运行 do_it_all.sh

关于仅使用 SSH key 和 dockerfile 进行部署,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32750482/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com