[英]docker-compose java cannot access jarfile
我試圖將Spring Boot應用程序作為Docker Compose設置中的服務之一運行,但是每當我運行docker-compose up -d
,運行Spring Boot應用程序的容器就會失敗並立即退出。 出於本文的目的,我使用的通用名稱是“ mycontainer”和“ myfile”。
運行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
core
服務的Dockerfile是運行Spring Boot應用程序的Dockerfile,它是這樣的:
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
映像運行單個容器,並設置與core_image
-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的錯誤。 我嘗試在Dockerfile的CMD
中指定jarfile的絕對路徑,但是從Docker Compose運行時這無濟於事。
有誰知道這可能是什么原因? 我在Windows 10主機上。 任何幫助是極大的贊賞。
看來您是通過在docker-compose中裝載./core中的內容來覆蓋/ usr / src / core的內容(將jar文件復制到其中)。 從服務->核心->卷中刪除下面的掛載,然后嘗試。 volumes: - './core:/usr/src/core'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.