单个 Docker 容器中有多种语言(Java 和 C++)

单个 Docker 容器中有多种语言(Java 和 C++)

我必须为两个独立程序构建单个 docker 映像,一个是 java 程序,一个是 c++ 程序。现在,我已经在 dockerfile 中为 c++ 程序编写了依赖项,并且它运行良好,但是当我检查 java 时,在所有示例中都说使用 java 的基本映像(FROM openjdk:8-jre-alpine),但我的问题是我必须仅从某个自定义映像构建映像。我正在使用 ubuntu,并且我已经通过安装 openjdk 运行了我的简单 java 程序,但我不知道如何正确添加 java 依赖项并将其与 c++ 一起在 docker 容器中运行。

我尝试添加运行 apt-get install -y default-jdk但它返回非零代码。我也试过运行 apt-get 安装 oracle-java8-installer但它也没有起作用。以下是我的 Dockerfile。

来自 csimage/abcserver

RUN apt-get update -y 
RUN apt-get install -y g++ 
RUN apt-get install -y make
RUN apt-get install -y build-essential
RUN apt-get install -y default-jdk

#C++ program
ADD ./cppProgram /cppProgram

#java program
ADD ./javaProgram /javaProgram

WORKDIR /cppProgram
WORKDIR /javaProgram

COPY abcserver.json /etc/
RUN make 

答案1

您可以查看错误日志:

docker history image_name
docker logs container_id

您将发现容器无法启动的原因。如果没有容器日志中的数据,很难给您其他建议。也许这些包在存储库中找不到。

一些技巧:

如果您有 2 个独立的应用程序,则每个应用程序都需要一个单独的容器。这当然不是必需的,但从工程角度来看是正确的。不建议使用 Unite(当然,在您的情况下可能不适用。)

每次 RUN 都会添加一个新的“层”,因此我建议您使用“\”:

RUN apt-get update -y && \
apt-get install -y g++ && \
apt-get install -y make && \
apt-get install -y build-essential && \
apt-get install -y default-jdk

相关内容