【发布时间】:2019-09-19 09:23:34
【问题描述】:
我有两个 docker 图像:imageA 和 imageB。
ImageADockerfile
FROM openjdk:11-jre-slim
COPY ./target/java-app.jar /java-application/
ImageBDockerfile
FROM imageA
# Install Python.
RUN \
apt-get update && \
apt-get install -y python python-dev python-pip python-virtualenv && \
rm -rf /var/lib/apt/lists/*
# Set the working directory to /app
WORKDIR /app
# Copy the current directory contents into the container at /app
COPY . /app
# Install any needed packages specified in requirements.txt
RUN pip install --trusted-host pypi.python.org -r requirements.txt
ENTRYPOINT ./startPythonServiceAndJavaApp.sh
startPythonServiceAndJavaApp.sh - 是启动 java 应用程序和 python 应用程序的脚本。
java -XX:+UseContainerSupport $JAVA_OPTIONS -jar ./java-application/java-app.jar & python app.py;
然后我构建 imageA - docker build -t imageA .。它构建成功。
然后我构建 imageB 并启动容器。 python 应用程序启动成功,但我收到错误
Error: Unable to access jarfile ./java-application/java-app.jar
当我 ssh 到正在运行的容器(注意,它正在运行)时,我进入 app 目录。我跑了ls,看到了这些文件:
C:\Users\user>docker exec -it 12345 bash
root@12345:/app# ls
Dockerfile app.py deploy.sh requirements.txt java-app.jar startPythonServiceAndJavaApp.sh
我的问题,为什么 java-app.jar 会出现在 app 目录中?在 imageA 的Dockerfile 中,我告诉它在java-application 目录中:
COPY ./target/java-app.jar /java-application/
【问题讨论】: