我正在使用 Spring Boot 2.3.0.M1引入的 Spring buildpacks来创建基于 Spring 的应用程序的 Docker 映像。一切顺利,我可以通过执行./gradlew bootBuildImageGradle 任务为每个应用程序创建 docker 图像,将 docker-compose 文件指向创建的图像(例如image: spring-test:latest),最后成功运行所有应用程序(docker-compose up)。
即使我有一个 bash 脚本来自动化构建过程,我还是想摆脱这个额外的步骤,让 Spring buildpacks 任务在我运行docker-compose up --build命令时自动执行,这样每个应用程序的 docker 镜像都会被构建并上传到主机的本地 docker 存储库,docker compose 将从该存储库中接管。
我的第一次尝试是为bootBuildImage在主机上执行任务的每个应用程序创建一个虚拟 Dockerfile ,但这需要从 docker 到主机的 SSH 连接,甚至不确定它是否能正常工作。
另一个想法是使用类似的方法,唯一的变化是首先将应用程序的源代码挂载或复制到 docker,配置 buildpacks 将图像存储到主机的本地 docker 镜像 repo(可能是 SSH 连接),最后在 docker 上执行 buildpacks。
我想知道是否有更好,更优雅的解决方案。