仅使用SSH密钥和dockerfile进行部署

请原谅我的开发人员天真但我认为你需要部署到一台机器上的是一个正确的SSH密钥,一个暴露的端口,一个登录的机器的IP地址和要部署的代码.

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

我已经尝试在数字海洋上设置Dokku(https://www.digitalocean.com/community/tutorials/how-to-use-the-digitalocean-dokku-application)并且需要DNS记录和git.我不需要那些作为依赖.

谢谢

如果我正确理解你的问题,除了scp,ssh和几个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或其他方式自动执行此过程以进行夜间部署,或者在其他条件下进行部署.

示例脚本/命令:

在serverB上:

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

在serverA上:

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’上创建必要的目录.接下来,使用scp将Dockerfile和构建脚本以及代码从serverA复制到serverB.然后使用ssh从serverA在serverB上运行do_it_all.sh.

翻译自:https://stackoverflow.com/questions/32750482/deployment-with-only-ssh-key-and-dockerfile

转载注明原文:仅使用SSH密钥和dockerfile进行部署