У меня есть два изображения докера: imageA и imageB .
ImageA Dockerfile
FROM openjdk:11-jre-slim
COPY ./target/java-app.jar /java-application/
ImageB Dockerfile
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 ?В Dockerfile
из imageA я сказал, что он находится в каталоге java-application
:
COPY ./target/java-app.jar /java-application/