上次,我编写了从 Grunt 可靠且干净地运行 Docker 的方法。

一般来说,在 Java 中我从来没有为此烦恼过。我已经在会话中运行了我的依赖项 - 如果它是 Java 应用程序,或者在进程中,或者如果不是,则使用 Flapdoodle OSS 之类的东西。这主要是有效的,并且通常非常容易,但并不总是最好的。

从好的方面来说,你不需要在你的机器上进行任何特殊设置来运行你的构建和测试。您需要 Java 和您的构建工具,仅此而已。您通常也不需要担心端口冲突,因为您可以在空闲端口上运行,也可以完全不联网。

不过,不利的一面是,您并没有以实际的方式运行依赖项。在某些情况下,这可能是巨大的。

例如,当文件系统区分大小写时——Linux——与不区分大小写时——Windows 和 Mac,MySQL 的行为微妙不同。这不是一个明显的区别,但它是一个重要的区别。

我还发现在同一个 JVM 类加载器中运行 neo4j 和 elasticsearch 是不可能的——因为需要不同版本的 lucene。

在 Docker 中运行您的依赖项无论如何都不是小事,但它确实消除了所有这些问题。从 Dev 到 Prod 的所有依赖项都可以运行完全相同的 Docker 映像,这非常重要。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐