我需要构建一个Docker容器(感觉像N00b),该容器运行以nginx Web服务器为首的Java应用程序。由于无需讨论的原因,我需要将它们放入一个容器中。
我想为此使用Alpine。我发现两个图像都包含已安装nginx的Alpine和已安装JDK的Alpine。我需要将两者结合起来。
我最好的做法是什么?从nginx容器开始并添加一个jdk,或者从包含jdk的容器开始并添加nginx?
或者可以选择合并两张图片(这是个好主意)。
感谢您的见解。
答案 0 :(得分:1)
要创建组合图像,您可以按照以下任一建议路径进行操作:
Dockerfile
,并构建自己的自定义图像。 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。