我确实有一个(Python Flask)应用程序,我想使用GitLab CI和Docker将其部署到我的VPS中。
在我的服务器上,我想要有我的应用程序的生产版和登台版。它们都需要MongoDB连接。
我的计划是在GitLab上自动构建应用程序,并将其推送到GitLab的Docker Registry。如果我想要将应用程序部署到试运行或生产环境中,我会执行docker pull、docker rm和docker run。
计划是将配置(例如secret_key)存储在.production.env (和.staging.env)中,并使用docker run --env-file ./env.list将其传递给应用程序
我已经在服务器上安装了MongoDB,应用程序的两个环境应该使用相同的MongoDB实例,但使用不同的数据库名称(在.env中配置)。
这是部署我的应用程序的最佳实践吗?你有什么建议吗?谢谢!
发布于 2019-06-20 20:51:35
以下是我的配置,它在不同的组织和项目规模中都工作得相当好:
要构建的:
要部署的:
.env文件中。docker-compose文件可以引用单个环境variables.docker-compose up (对于较小的应用程序)或将docker堆栈重新部署到群中(对于较大的docker堆栈将从目标服务器删除所有内容。如果你喜欢,你可以通过Docker Machine来做第三步。然而,我觉得在我的案例中,它的好处并不值得使用。
发布于 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手动部署。
https://stackoverflow.com/questions/56686276
复制相似问题