如何在基于 java 的 docker 图像中安装包管理器

How to install package manager in java based docker image

我正在使用 SpringBoot 和 Java 以及 Docker 开发应用程序。

我想在我的应用程序中安装 Netcat,以便我可以在我的 spring 应用程序启动之前检查特定容器是否已启动。

我试过了

RUN apt-get update && apt-get -y install netcat && apt-get clean

但是提示找不到apt-get。

我不确定如何在基于 java 的应用程序中安装任何包管理器。

或者有没有其他我可以安装的 net-cat。

下面是我的Dockerfile

FROM openjdk:8
RUN apt-get update && apt-get -y install netcat && apt-get clean
ADD target/student.jar student.jar
EXPOSE 2018
ENTRYPOINT ["java","-jar","student.jar"]

apt-get 是基于 Debian 的 Linux 发行版(包括 Ubuntu 和其他发行版)的包管理器。

试试 apk add

此外,如果您在 Dockerfile 中使用包管理器,明确指定 Linux 发行版 被认为是一种很好的做法。在您的情况下,您可以使用 openjdk:8-jdk-stretch 变体或任何其他指定发行版的变体。

我可以用这个 Dockerfile

获得成功 docker build
FROM openjdk:8
RUN apt-get update && apt-get -y install netcat && apt-get clean
ENTRYPOINT ["/bin/bash"]

apt-get 工作得很好。据我所知 openjdk:8 是 Ubuntu (或者至少是基于 Debian 的)。即使我运行

docker build . -t stackexample
docker run -it stackexample

并进入容器,运行宁 netcat 打开 netcat 命令。