用于执行Jar的简单docker-compose

问题描述 投票:0回答:1

我正在尝试建立一个非常简单的Docker容器,它将执行一个Jar文件。我想要一个可以运行简单Jar的图像。我不需要其他特别的东西。

到目前为止,我的docker-compose.yml看起来像这样,但是无法正确启动:

version: "3.3"

services:
  myapp:
    image: openjdk:8
    container_name: "myapp"
    restart: always
    ports:
      - 8091:8091
    volumes:
      - "./meanwhile-in-hell.jar:/app.jar"
    command: ['java', '-jar', '/app.jar']
STATUS
Restarting (1) 2 seconds ago

使用command: ['java', '-jar', '/app.jar']选项,我在Docker日志中看到了这一点:

Error: Invalid or corrupt jarfile /app.jar

如果更改为使用entrypoint: [ "sh", "-c", "java -jar /app.jar" ],则会看到相同的错误。

Jar文件绝对正确,没有损坏。我已经在另一个正在运行的tomcat:8-alpine容器上手动运行了它,并且它成功启动。

java docker jar docker-compose
1个回答
0
投票

您可以检查此issue,您需要在入口点设置标记,在pom中设置路径。

对我来说,当我遇到问题时,我所做的只是放JAR_FILEpom中的参数不带正斜杠“ /”,就可以了。

    <resource>
            <targetPath>/</targetPath>
              <directory>${project.build.directory}</directory>
               <include>${project.build.finalName}.jar</include>
    </resource>

以及与Dockerfile一起的入口点将是]


FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
© www.soinside.com 2019 - 2024. All rights reserved.