首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Docker在我的VPS上部署应用程序的最佳实践是什么?

使用Docker在我的VPS上部署应用程序的最佳实践是什么?
EN

Stack Overflow用户
提问于 2019-06-20 20:44:04
回答 2查看 2.2K关注 0票数 2

我确实有一个(Python Flask)应用程序,我想使用GitLab CI和Docker将其部署到我的VPS中。

在我的服务器上,我想要有我的应用程序的生产版和登台版。它们都需要MongoDB连接。

我的计划是在GitLab上自动构建应用程序,并将其推送到GitLab的Docker Registry。如果我想要将应用程序部署到试运行或生产环境中,我会执行docker pulldocker rmdocker run

计划是将配置(例如secret_key)存储在.production.env (和.staging.env)中,并使用docker run --env-file ./env.list将其传递给应用程序

我已经在服务器上安装了MongoDB,应用程序的两个环境应该使用相同的MongoDB实例,但使用不同的数据库名称(在.env中配置)。

这是部署我的应用程序的最佳实践吗?你有什么建议吗?谢谢!

EN

回答 2

Stack Overflow用户

发布于 2019-06-20 20:51:35

以下是我的配置,它在不同的组织和项目规模中都工作得相当好:

要构建的

  1. 应用程序位于git存储库中(本例中为GitLab)。每个应用程序都有自己的Dockerfile文件。
  2. 我使用Jenkins来构建,当然,你可以使用任何其他的CD工具。Jenkins提取应用程序的存储库,构建docker镜像并将其发布到私有Docker存储库(在我的例子中是Nexus)。

要部署的

  1. I有一个中心的、独立于应用程序的存储库,它有一个docker-compose文件(或者可能有多个文件,这些文件将一个中心文件扩展到不同的环境)。此文件包含所有服务定义,并引用我的Nexus存储库中的docker镜像。
  2. 如果我使用的是secrets,则将它们存储在HashiCorp存储库实例中。Jenkins提取它们,并将它们写入到一个.env文件中。docker-compose文件可以引用单个环境variables.
  3. Jenkins拉取docker-compose存储库,在我的示例中,通过scp将docker-compose文件和.env文件上载到我的server(s).
  4. It,然后触发docker-compose up (对于较小的应用程序)或将docker堆栈重新部署到群中(对于较大的docker堆栈将从目标服务器删除所有内容。

如果你喜欢,你可以通过Docker Machine来做第三步。然而,我觉得在我的案例中,它的好处并不值得使用。

票数 3
EN

Stack Overflow用户

发布于 2019-06-20 20:55:11

我可以推荐的一件事,正如我在生产中多次做过的那样,就是部署带有TLS加密端点的Docker Swarm。This link谈到了如何通过证书保护群的安全。这需要一些工作,但它将允许您为您的应用程序定义服务。

服务一旦在线,就可以有多个副本,每当你更新服务(IE部署新的镜像)时,swarm将确保其中一个始终在线。

docker service update <service name> --image <new image name>

一些VPS服务器实际上有Kubernetes作为服务(比如Digital Ocean),如果他们有,那就更可取了。Gitlab实际上有一个autodevops功能,可以远程管理您的Kubernetes集群,但您也可以使用kubectl手动部署。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56686276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档