使用专用MySQL数据库停靠Java应用程序
我有一个Java应用程序,它需要一个MySQL/MariaDB数据库才能工作。我的目标是为它构建一个独立的Docker映像。我查阅了很多教程,但它们似乎与我想要实现的目标相矛盾。这让我开始怀疑我的目标是否合适,但我仍然不明白为什么这不是一个合理的目标
我不喜欢共享MySQL服务器,使其上有多个数据库。重要的是应用程序的数据库在那里,而不是别的
建立这样一个Docker形象的正确方法是什么
我是否使用docker compose制作了两个容器,一个用于DB,一个用于Java应用程序?这似乎是大多数人的建议,但我想要一个图像,可以从注册表中提取,并将开箱即用
我是否从MySQL/MariaDB映像生成单个映像,并向其中添加Java和我的应用程序
我是否从OpenJDK映像生成单个映像,并将MySQL/MariaDB和我的应用程序添加到其中
还有别的办法吗
非常感谢
# 1 楼答案
docker映像设计为运行单个命令,因此,尽管可以将应用程序文件添加到MySQL映像(反之亦然),但要同时运行这两个映像还是很困难的
您使用了
docker-compose
,这将允许您定义这两个容器以及它们的运行方式。这实际上可能会使您的部署比独立容器更简单您可能还希望考虑不发送MySQL容器。为什么不让应用程序能够创建所需的数据库,并为用户添加一个配置选项来告诉它在哪里可以找到数据库服务器?如果用户选择使用停靠的MySQL实例,他们只需拉取香草
mysql:latest
映像并自行配置端口即可或者,一旦将该功能添加到应用程序中,就可以使用vanilla MySQL实例发布一个Compose解决方案,只需要一个自定义Dockerfile