在不断退出的 docker 容器中安装自定义包

我有一个运行 springboot java 应用程序的 docker 容器。Dockerfile:


# Create container with java preinstalled

FROM openjdk:8-jdk-alpine


# Create app directory

VOLUME /tmp


# Handle Arguments

ARG JAR_FILE

ARG ENV_NAME

ENV SPRING_PROFILES_ACTIVE=${ENV_NAME}

RUN echo ${ENV_NAME}


# Bundle app source

COPY ${JAR_FILE} app.jar

COPY application.yml application.yml


# Run the server

ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-Dspring.config.location=application.yml","-jar","app.jar"]

现在,我需要在该容器中安装一个自定义库。我需要复制安装,解压缩,运行安装脚本并回答提示(是/否)


我知道最简单的方法是连接到容器,安装包并提交更改。


首先 - 我使用以下方法启动容器:


docker run --name local-jdk8 -d openjdk:8-jdk-alpine

下一步是复制数据并运行安装脚本,但由于运行命令为空(“/bin/sh”),这意味着我无法运行,因此容器不断退出


docker exec -it local-jdk8 bash

关于如何修改这样的容器的任何想法?


Cats萌萌
浏览 132回答 2
2回答

慕运维8079593

值得一提的是,这里有一个小技巧,可以让您保持容器运行以修改和提交它:docker run --name local-jdk8 -d openjdk:8-jdk-alpine tail -f /dev/null此外,bash容器上没有安装,因此sh必须执行以下操作:docker exec -it local-jdk8 sh然而,修改Dockerfile是更好的方法,因为您的更改会保留在代码中,而不是在潜在的临时容器上完成。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java