问题描述
需要一个好的工具,可以在Docker上运行一系列基于Spring Boot的工具。每个工具都需要一个网页和一个数据库连接。
这些工具主要是为了解决我们主要业务操作的常规副作用而产生的小任务。例如,他们可能需要查找具有Field A和Field B的Entity的所有实例,或者在不经过运维部门的情况下更改某个数据库的某个属性。
无论如何,我使用Kotlin和Spring Boot编写它们,只是为了速度,并且我在每个工具上使用不同的Spring Boot实例,以避免在单个Spring Boot应用程序中处理冲突的数据源。我使用Docker只是因为我们都在使用Docker,所以为什么现在要改变呢?而Docker-compose则是为了方便部署。
我遇到的问题是,我希望有一个单一的命令来进行git更新、重建镜像和重新启动容器。或者,更好的是,当其中一个工具更新时,只需重新创建并替换容器即可。
显然,我可以编写脚本来实现这一点,但似乎这样的工具已经存在了。是否有类似于持续交付(CD)的工具,但没有所有的开销?
我尝试过Dokku,但不喜欢它。对我来说,它太复杂了,不符合我的需求。
解决方案
请注意以下操作注意版本差异及修改前做好备份。
方案1
根据您的需求,您可以使用CI(持续集成)工具来构建Docker镜像,当git代码发生变化时自动构建。然后,您可以运行一些脚本来部署到环境中(持续交付)。
首先,我要强调的是,实施CI是最高优先级的,因为目前似乎是手动构建Docker镜像。
以下是一些可能适合您的CI工具:
– Jenkins:Jenkins是一个流行的CI工具,它可以与Docker集成,并且具有丰富的插件生态系统,可以满足各种需求。
– GitLab CI:GitLab CI是一个集成在GitLab中的CI工具,它提供了与GitLab代码仓库的紧密集成,并且也可以与Docker集成。
– Travis CI:Travis CI是一个基于云的CI工具,它可以与GitHub等代码托管平台集成,并且也可以与Docker集成。
您可以选择适合您需求和团队的CI工具,并根据其文档进行设置和配置。一旦设置好了CI,您就可以在git代码发生变化时自动构建Docker镜像。
方案2
如果您不想使用完整的CI工具,您可以编写一些脚本来实现您的需求。以下是一个示例脚本,可以在git代码发生变化时自动构建和部署Docker镜像:
#!/bin/bash
# 更新git代码
git pull
# 重建Docker镜像
docker build -t your_image_name .
# 停止并删除旧的容器
docker stop your_container_name
docker rm your_container_name
# 启动新的容器
docker run -d --name your_container_name -p 80:80 your_image_name
在这个示例脚本中,我们首先使用git pull
命令来更新git代码。然后,使用docker build
命令来重建Docker镜像,并将其命名为your_image_name
。接下来,我们使用docker stop
和docker rm
命令来停止和删除旧的容器。最后,我们使用docker run
命令来启动新的容器,并将其命名为your_container_name
,并将容器的端口映射到主机的端口80。
您可以根据您的实际需求和环境进行脚本的修改和定制。
请注意,这只是一个示例脚本,您可能需要根据您的具体情况进行修改和调整。
方案3
如果您不想使用CI工具或编写脚本,您还可以考虑使用一些第三方工具来管理Docker容器的构建和部署。以下是一些可能适合您的工具:
– Drone:Drone是一个开源的CI/CD工具,它可以与Docker集成,并提供了易于使用的界面和丰富的功能。
– GoCD:GoCD是一个开源的持续交付工具,它可以与Docker集成,并提供了强大的流水线和部署功能。
– Rancher:Rancher是一个开源的容器管理平台,它可以帮助您管理和部署Docker容器,并提供了一套丰富的工具和功能。
您可以选择适合您需求和团队的工具,并根据其文档进行设置和配置。
请注意,这些工具可能具有不同的特性和功能,您可以根据您的实际需求进行选择和定制。
以上是几种可能的解决方案,您可以根据您的实际需求和团队情况选择适合您的方法。希望对您有所帮助!