docker-compose java не может получить доступ к jarfile - PullRequest
0 голосов
/ 28 мая 2018

Я пытаюсь запустить приложение Spring Boot в качестве одной из служб в настройке Docker Compose, но всякий раз, когда я запускаю docker-compose up -d, контейнер с приложением Spring Boot завершается сбоем и немедленно завершается.Для целей этого поста я использую общие имена, такие как «mycontainer» и «myfile».

Running docker-compose logs core показывает, что сообщение об ошибке:

mycontainer | Error: unable to access jarfile myjar.jar

Мой файл docker-compose:

version: '3.3'

services:
  webapp:
    image: webapp_image
    container_name: webapp-container
    build:
      context: ./webapp
      dockerfile: Dockerfile
    volumes:
      - './webapp:/usr/src/app'
    ports:
      - 3000:3000
      - 35729:35729
    environment:
      - NODE_ENV=development
      - env_file=./webapp/.env

  core:
    image: core_image
    container_name: core-container
    build:
      context: ./core
      dockerfile: Dockerfile
    volumes:
      - './core:/usr/src/core'
      - './algorithms:/usr/src/algorithms'
    ports:
      - 8080:8080
    environment:
      - JARFILE=myjar.jar
      - JAVA_OPTIONS=-Djava.security.egd=file:/dev/./urandom

Файл Docker для службы core, которая запускает приложение Spring Boot, выглядит следующим образом:

FROM openjdk:8-jdk-alpine
RUN mkdir -p /usr/src/core
RUN mkdir -p /usr/src/algorithms
ADD ./myproject/target/myjar.jar /usr/src/core
ADD ./algorithms /usr/src/algorithms
WORKDIR /usr/src/core

CMD java $JAVA_OPTIONS -jar $JARFILE

ЕслиЯ запускаю отдельный контейнер из образа core_image и устанавливаю те же переменные среды, которые я определил в файле docker-compose, я могу успешно запустить приложение Spring Boot, например:

$ docker run -it -p 8080:8080 --name mycontainer core_image sh
$ /usr/src/core # ls -l
total 15852
-rwxr-xr-x    1 root     root      16228579 Apr 21 22:44 myjar.jar
$ /usr/src/core # java $JAVA_OPTIONS -jar $JARFILE

Ноесли я запускаю контейнер из того же изображения, что и часть docker-compose up -d, контейнер завершает работу с ошибкой, что Java не может получить доступ к jarfile.Я попытался указать абсолютный путь к jarfile в CMD Dockerfile, но это не помогает при запуске из Docker Compose.

Кто-нибудь знает, что может быть причиной этого?Я на хосте Windows 10.Любая помощь с благодарностью.

1 Ответ

0 голосов
/ 29 мая 2018

Кажется, вы переопределяете содержимое / usr / src / core [куда вы копируете файл jar], монтируя содержимое из ./core в docker-compose.Удалите монтирование ниже из служб-> core-> томов и попробуйте. volumes: - './core:/usr/src/core'

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