简单的docker-compose执行Jar

时间:2019-09-26 15:17:34

标签: java docker jar docker-compose

我正在尝试建立一个非常简单的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容器上手动运行了该容器,它成功启动。

1 个答案:

答案 0 :(得分:0)

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

  

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

    <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"]