![](/img/trans.png)
[英]Best practice to connect my own code into a standard docker image in kubernetes
[英]What is the best practice for deploying my application on my VPS using Docker?
我确实有一个(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
配置)。
这是部署我的应用程序的最佳实践吗? 你有什么建议? 谢谢!
这是我在不同组织和项目规模中运行良好的配置:
构建:
部署:
.env
文件。 docker-compose 文件可以引用各个环境变量。docker-compose up
(对于较小的应用程序)或将 docker 堆栈重新部署到 swarm 中(对于较大的应用程序)。如果你喜欢它,你可以通过 Docker Machine 执行第 3 步。 然而,我觉得它的好处不值得在我的情况下使用。
我可以推荐的一件事是,因为我已经在生产环境中做过多次,所以使用 TLS 加密端点部署 Docker Swarm。 此链接讨论如何通过证书保护群。 这是一些工作,但它允许您做的是为您的应用程序定义服务。
这些服务一旦在线就可以有多个副本,并且每当您更新服务(即部署新映像)时,swarm 都会负责确保一个服务始终在线。
docker service update <service name> --image <new image name>
一些 VPS 服务器实际上有 Kubernetes 即服务(如 Digital Ocean),如果有,那就更可取了。 Gitlab 实际上有一个 autodevops 功能,可以远程管理你的 Kubernetes 集群,但你也可以使用 kubectl 手动部署。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.