Файл Docker COPY затем WORKDIR, но файл находится в другом каталоге - PullRequest
0 голосов
/ 30 апреля 2019

У меня есть два изображения докера: 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/

1 Ответ

0 голосов
/ 30 апреля 2019

Мой вопрос можно перефразировать COPY и WORKDIR вместе. В качестве быстрого решения я поместил файл jar в корень контекста докера. Затем я запустил оба приложения из этого контекста.

Вот изменения:

ImageA Dockerfile - просто скопируйте в корень контейнера. COPY ./target/java-app.jar /

startPythonServiceAndJavaApp.sh java -XX: + UseContainerSupport $ JAVA_OPTIONS -jar ./java-app.jar & python app.py;

Оба приложения теперь работают в одном контейнере. Надеюсь, что это поможет другим. Пожалуйста, поправьте меня, если я ошибаюсь, или поделитесь вашими идеями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...