Java 如何在docker映像中保留导出的文件
我正在docker中迁移一个java独立maven项目。到目前为止,我们为这个maven项目创建了一个jar文件,它使用公共静态void main方法运行Java 如何在docker映像中保留导出的文件,java,docker,maven,dockerfile,Java,Docker,Maven,Dockerfile,我正在docker中迁移一个java独立maven项目。到目前为止,我们为这个maven项目创建了一个jar文件,它使用公共静态void main方法运行 java -cp app.jar com.xxx.ExportManager db.properties 完成此代码后,它将在其当前目录中导出一个文件 Dockerfile FROM centos:7 RUN yum install -y \ java-1.8.0-openjdk \ java-1.8.0-openjdk-de
java -cp app.jar com.xxx.ExportManager db.properties
完成此代码后,它将在其当前目录中导出一个文件
Dockerfile
FROM centos:7
RUN yum install -y \
java-1.8.0-openjdk \
java-1.8.0-openjdk-devel
ENV JAVA_HOME /usr/lib/jvm/java-1.8.0-openjdk/
ENV echo $JAVA_HOME
RUN java -version
ARG JAR_FILE=target/manager.jar
ARG JAR_LIB_FILE=target/lib/
WORKDIR /opt/manager/app/
COPY ${JAR_FILE} app.jar
COPY conf/db.properties /opt/manager/app/db.properties
ADD ${JAR_LIB_FILE} lib/
ENTRYPOINT ["java","-jar","app.jar"]
命令:
- 建筑形象:
docker build-t pc.
- 运行主方法:
docker Run-t pc/opt/manager/app/db.properties
docker run -it --entrypoint sh pc
cd /opt/manager/app
该目录没有导出文件,但它包含所有其他项目文件
如何在图像中保留导出的文件
PS:我是docker的新手,请原谅任何错误。docker run-it--entrypoint sh pc实际上启动了一个新容器,而不是在运行的容器中启动外壳。因此,您正在查看尚未完成导出的新容器(因为您重写了入口点)
要在正在运行的容器中启动shell并将stdin/stdout连接到它,您需要exec
而不是run
,例如:
docker exec -it pc bash
然而,在您的特定场景中,您可能无论如何都无法启动shell,因为一旦导出完成,容器将停止。有关检查已停止容器的文件系统的信息,请参见本文