java - 使用专有 MySQL DB 对 Java 应用程序进行 Docker 化

标签 java mysql docker docker-compose mariadb

我有一个 Java 应用程序,需要 MySQL/MariaDB 数据库才能工作。我的目标是为其构建一个独立的 Docker 镜像。我查阅了很多教程,但它们似乎与我想要实现的目标相矛盾。这让我一开始就怀疑我的目标是否合适,但我仍然不明白为什么它不是一个合理的目标。

我不喜欢共享 MySQL 服务器以在其上拥有多个数据库。唯一重要的是应用程序的数据库在那里,没有别的。

继续构建此类 Docker 镜像的正确方法是什么?

我是否使用 docker-compose 创建两个容器,一个用于数据库,一个用于 Java 应用程序?这就是大多数人的建议,但我想要一个可以从注册表中提取并且开箱即用的镜像。

我是否可以从 MySQL/MariaDB 镜像制作单个镜像并向其中添加 Java 和我的应用程序?

我是否可以从 OpenJDK 镜像创建单个镜像并向其中添加 MySQL/MariaDB 和我的应用程序?

还有其他方法吗?

非常感谢

最佳答案

docker 镜像被设计为运行单个命令,因此尽管您可以将应用程序文件添加到 MySQL 镜像(反之亦然),但您将很难同时运行这两个命令。

您使用 docker-compose 走上了正确的道路——它可以让您定义两个容器以及它们的运行方式。这实际上可能为您提供比独立容器更简单的部署。

您可能还希望考虑根本不运送 MySQL 容器。为什么不让您的应用程序能够创建所需的数据库,并为用户添加一个配置选项来告诉它在哪里可以找到数据库服务器?如果用户选择使用 Docker 化的 MySQL 实例,他们只需拉取普通 mysql:latest 镜像并自行配置端口。

或者,一旦您将该功能添加到应用程序中,您就可以使用普通 MySQL 实例发布 Compose 解决方案,只需要一个自定义 Dockerfile。

关于java - 使用专有 MySQL DB 对 Java 应用程序进行 Docker 化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53298908/

相关文章:

django - 在 django 中运行测试时设置 liveserver 端口

docker - 确保给定的 docker 容器正在运行

java - 有没有办法找出传递给 jar 的参数是否被引用?

MySQL 连接和全文搜索

java - 如何在 JLabel 上使用按键绑定(bind)?

mysql - 如何获得从开始到结束的准确时间

php - 如何根据动态创建的输入框更新MySQL数据库中的特定记录

wordpress - 在使用docker首次安装Wordpress时如何自动激活插件

java - Resilience4J Retry 的预期行为是什么?

java printjob 横向空白