Docker не может получить доступ к файлу JAR - PullRequest
0 голосов
/ 07 мая 2018

Контейнер Docker не может получить доступ к файлу JAR, доступ к которому осуществляется через точку монтирования /my/project/dir. Я уверен, что это не проблема с разрешениями, потому что я изменил права доступа локально, поэтому он должен иметь возможность читать / писать / выполнять.

Это Dockerfile:

FROM tomcat:9-jre8
RUN apt-get update && apt-get install librrds-perl rrdtool -y
VOLUME ["/data/rrdtool", "/my/project/dir"]
ENTRYPOINT [ "java","-jar","/my/project/dir/build/libs/spring-project-0.1.0.jar" ]

И это docker-compose.yml файл:

version: '2'
services:
 db:
   container_name: db1
   image: mysql:8
   restart: always
   environment:
     MYSQL_ROOT_PASSWORD: password123
     MYSQL_USER: user123
     MYSQL_PASSWORD: pasw
     MYSQL_DATABASE: mydb
   expose:
     - "3307"
 db2:
   container_name: db2
   image: mysql:8
   restart: always
   environment:
     MYSQL_ROOT_PASSWORD: password123
     MYSQL_USER: user123
     MYSQL_PASSWORD: pasw
     MYSQL_DATABASE: mydb2
   expose:
     - "3308"
 spring:
   container_name: spring-boot-project
   build: 
     context: ./
     dockerfile: Dockerfile
   links:
     - db:db1
     - db2:db2
   depends_on:
     - db
     - db2
   expose:
     - "8081"
   ports:
     - "8081:8081"
   restart: always

Это вывод из docker-compose logs spring:

Error: Unable to access jarfile /my/project/dir/build/libs/spring-project-0.1.0.jar

1 Ответ

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

Я не вижу, чтобы вы копировали jar в контейнер. Вам следует попробовать переместить объявление VOLUME из Dockerfile в файл compose в службу spring следующим образом:

  volumes:
    - /my/project/dir:/app

А затем внутри Dockerfile вы должны указать на каталог:

ENTRYPOINT [ "java","-jar","/app/build/libs/spring-project-0.1.0.jar" ]

Позже, если вы захотите развернуть его (например), вам следует скопировать файлы проекта непосредственно в образ вместо использования подхода volumes. Так что в Dockerfile вы бы потом сделали:

COPY . /app

вместо VOLUME [..]

Собираем все вместе:

разработка:

Dockerfile:

FROM tomcat:9-jre8
RUN apt-get update && apt-get install librrds-perl rrdtool -y
ENTRYPOINT [ "java","-jar","/app/build/libs/spring-project-0.1.0.jar" ]

компоновать-файл:

version: '2'
services:
    [..]
    spring:
       container_name: spring-boot-project
       build: .
       links:
         - db:db1
         - db2:db2
       depends_on:
         - db
         - db2
       ports:
         - "8081:8081"
       restart: always
       volumes:
         - /my/project/dir:/app

Развертывание:

Dockerfile (который находится внутри папки проекта, сборка Docker требует, чтобы его контекст сборки находился в текущем каталоге):

FROM tomcat:9-jre8
RUN apt-get update && apt-get install librrds-perl rrdtool -y
COPY . /app
ENTRYPOINT [ "java","-jar","/app/build/libs/spring-project-0.1.0.jar" ]

компоновать-файл:

version: '2'
services:
    [..]
    spring:
       container_name: spring-boot-project
       build: .
       links:
         - db:db1
         - db2:db2
       depends_on:
         - db
         - db2
       expose:
         - "8081"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...