我有一个Java应用程序,它需要一个MySQL / MariaDB数据库才能工作。我的目标是为此构建一个独立的Docker映像。我查阅了许多教程,但它们似乎与我想要实现的目标相矛盾。这让我怀疑我的目标最初是否合适,但是我仍然看不到为什么它不是一个合理的目标。
我不在乎共享MySQL服务器以在其上拥有多个数据库。只有应用程序的数据库在那里,这很重要。
继续构建这样的Docker映像的正确方法是什么?
我是否使用docker-compose制作了两个容器,一个用于数据库,一个用于Java应用程序?这似乎是大多数人的建议,但是我想要一个可以从注册表中拉出并且可以直接使用的图像。
我是否可以从MySQL / MariaDB映像制作单个映像并将Java和我的应用程序添加到其中?
我是否可以从OpenJDK映像制作单个映像,然后向其中添加MySQL / MariaDB及其应用程序?
还有另一种方式可以继续吗?
非常感谢
答案 0 :(得分:1)
Docker镜像旨在运行单个命令,因此尽管您可以将应用程序文件添加到MySQL镜像(反之亦然),但是您将很难同时运行它们。
您正在使用docker-compose
朝正确的方向前进-这将使您可以定义两个容器及其运行方式。实际上,这可能比独立容器为您提供了更简单部署。
您可能还希望考虑完全不运送MySQL容器。为什么不让您的应用程序具有创建所需数据库的能力,并为用户添加配置选项以告知用户在何处可以找到数据库服务器?如果用户选择使用经过dockerized的MySQL实例,则只需拉出原始mysql:latest
映像并自行配置端口即可。
或者将该功能添加到您的应用程序中之后,您就可以使用香草MySQL实例附带一个Compose解决方案,只需要一个自定义Dockerfile。