Я пытаюсь запустить приложение 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.Любая помощь с благодарностью.