簡體   English   中英

docker-compose java無法訪問jarfile

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM