如何在基于Java的Docker映像中安装软件包管理器

时间:2019-02-25 11:08:08

标签: java spring-boot docker apt netcat

我正在使用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"]

2 个答案:

答案 0 :(得分:1)

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

改为尝试apk add

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

答案 1 :(得分:1)

使用此docker build,我可以成功获得Dockerfile

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 cmd。