了解 docker 原则

Understanding docker principles

我做了一个非常简单的 golang 服务器,我需要将它部署到 digitalocean droplet。

我知道交叉构建 go 应用程序可能会出现问题,以防他们使用 cgo,所以为了以后不考虑它,我决定使用 docker,所以我的应用程序将被构建和运行 总是在同一个环境中。

我没有得到的第一件事是开发应用程序。当我创建 Dockerfile 时,我使用命令将文件从我的项目目录添加到新创建的 docker 图像中。然后我 运行 从这个图像创建的容器。但是如果我编辑我的代码呢? - 据我所知,我必须停止容器,删除图像,然后重新构建它。对于这种常见情况,这有点棘手 - 或者我做错了什么?

第二个 - 我在 DO 上创建了一个 docker droplet:部署我的应用程序的方法是什么?

But what if I edit my code? - as I understood I must stop the container, remove an image and then build it again. This is a bit tricky for such a common situation - or am I doing things wrong?

不要删除图像只是重建它。它将比第一个初始构建快得多。还有为什么它很棘手?这只是一两个命令,如果觉得烦人,您可以创建一个 bash 或 .bat 脚本。

I have created a docker droplet on a DO: Whats the way to deploy my app?

三个选项都有可能。对于第二个,您必须将 VM 设置为 docker-hub 存储库,这可能超出您的需要。使用 docker 集线器也不错。您也可以只在您的服务器上构建图像。我建议使用 docker 集线器,因为它很方便,并在您的服务器上设置瞭望塔,以便在新图像推送时重新启动您的 Web 应用程序。

编辑:以上建议是针对 VM 而不是 docker Droplet。我不熟悉 DO,但这篇文章应该有所帮助:

https://blog.machinebox.io/deploy-machine-box-in-digital-ocean-385265fbeafd