我想直接从他们的Git存储库部署几个web应用程序
一个web应用程序由两个docker容器组成,一个用于Apache Tomcat (作为中间件和服务静态文件,例如Vue.js前端)和一个Mysql数据库容器。
Ubuntu服务器本身将从头开始初始化,提供一个Ansible playbook,例如docker/docker-compose和一个预配置的Apache web服务器,它将用作所有web应用程序( Apache web服务器的虚拟主机)的反向代理。
第二个Ansible攻略通过在Ubuntu服务器上创建新用户,从Git服务器克隆web应用程序的存储库,并在Apache web服务器上配置反向代理来安装web应用程序。
有没有一个好的方法来配置/描述web应用程序在其Git存储库中的部署?这种描述应该包括docker-compose文件的名称、如何构建中间件软件的war文件、将war文件部署到相对于Ubuntu服务器中web应用程序用户的主目录的位置,等等。有没有人碰巧知道有没有标准化的方法来达到我的目标?
发布于 2020-03-16 17:39:59
我认为,正常的方法是使用CI/CD环境。
Git正在存储项目的源代码。每次提交(或任何你想要的事件),一个连续的集成过程开始,并根据需要编译源代码。在特定分支(主/生产)的情况下,CI/CD进程创建一个工件,该工件被打包到Docker映像中并推送到注册表。所有这些都不是在服务器上完成的--而是在另一台机器上--不要使用你的Ubuntu生产机器来编译webapp……
然后CI/CD过程可以通过直接在远程机器上执行或者通过调用ansible playbook (例如,生成ReverseProxy设置)来启动发布过程。因此,您已经完全将编译过程从配置中分离出来。攻略可能是该项目的一部分。
Gitlab和Jenkins有几个例子--比如https://docs.gitlab.com/ee/ci/docker/using_docker_build.html。
每个项目都有自己的Dockerfile来描述服务本身。并且有一个包含Docker-Compose文件和Ansible Scripts的整体项目来生成生产环境(通常)。每个服务的配置是通过每个SCM项目的行动手册完成的。
更改一个项目中的文件将重新创建Docker镜像。你只需要调用一个docker-compose pull & up -d (也许你不需要重新运行整个docker-compose-Create过程)。另一个任务可以自动运行,也可以在任何更改时运行。我认为,这里的诀窍是使用Docker容器而不是Ansible脚本,因为您已经使用了docker-compose环境-完全使用它。
所以-你有(例如)
Gitlab
- maybe a Docker Registry
- maybe in front of that a ReverseProxy.
ReverseProxy
好的是-与AWX和其他一些主机一起,你可以为不同的分支和新项目创建临时区域,也可以使用基于时间的部署。
当然-用你想要的任何东西替换Gitlab。
https://stackoverflow.com/questions/60569917
复制相似问题