将Java添加到NGINX Docker或将NGINX添加到Alpine上的Java Docker?

时间:2019-05-24 05:50:19

标签: java docker nginx alpine

我需要构建一个Docker容器(感觉像N00b),该容器运行以nginx Web服务器为首的Java应用程序。由于无需讨论的原因,我需要将它们放入一个容器中。

我想为此使用Alpine。我发现两个图像都包含已安装nginx的Alpine和已安装JDK的Alpine。我需要将两者结合起来。

我最好的做法是什么?从nginx容器开始并添加一个jdk,或者从包含jdk的容器开始并添加nginx?

或者可以选择合并两张图片(这是个好主意)。

感谢您的见解。

1 个答案:

答案 0 :(得分:1)

要创建组合图像,您可以按照以下任一建议路径进行操作:

  • 使用两个图像的设置步骤创建合并的Dockerfile,并构建自己的自定义图像。
  • 创建从图像1(越是“复杂”的图像)提取的Dockerfile,并添加图像2所需的命令。

首选第二种方法,因为您可以从已知良好的图像开始,而不必从头开始。另外,您可能只需要进行最小的更改。为此,两个图像应共享一个公共基础图像,例如alpine

检查Nginx和Java OpenJDK Dockerfile,您会发现Nginx Dockerfile相当复杂,具有许多必备软件包和设置步骤,因此它更适合基础映像。我的建议是,从Nginx基本映像开始,然后在顶部添加Java。

OpenJDK Java 7、8(稳定)以及9和10(实验性)已在Alpine存储库中提供。如果对特定的Java实现没有硬性要求,而您对OpenJDK 8感到满意,那么合并的Dockerfile可能很简单:

FROM nginx:alpine

RUN apk add openjdk8

如果您需要特定的Java版本(Alpine存储库中不提供),通常需要下载压缩的Alpine Java发行版并解压缩并相应地设置JAVA_HOME。例如,请参见OpenJDK 13 Alpine Dockerfile