Docker-compose无法运行jar文件,但可以使用Dockerfile

Asi*_*mez 5 docker dockerfile docker-compose

我已经配置了下一个Dockerfile,它工作正常:

FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ADD farr-api-0.1.0.jar app.jar
RUN sh -c 'touch /app.jar'
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]
Run Code Online (Sandbox Code Playgroud)

现在我想运行相同但使用docker-compose,所以我尝试使用相同的sintaxys,这是我的docker-compose.yml:

码头工人,compose.yml:

jar:
  image: frolvlad/alpine-oraclejdk8:slim
  volumes:
    - /tmp
  add: "farr-api-0.1.0.jar" "app.jar"
  command: sh -c 'touch /app.jar'
  environment:
    JAVA_OPTS=""
  entrypoint: [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]
Run Code Online (Sandbox Code Playgroud)

它抛出下一个失败:

ERROR: yaml.parser.ParserError: while parsing a block mapping
  in "./docker-compose.yml", line 2, column 3
expected <block end>, but found '<scalar>'
  in "./docker-compose.yml", line 5, column 29
Run Code Online (Sandbox Code Playgroud)

我认为这可能是sintax问题

Docker-compose版本1.8.1

nwi*_*ler 3

您的docker-compose.yml文件中有两个语法错误:

  • Docker-Compose 不支持该add命令。如果您想将文件添加到容器中,则必须在 a 中执行此操作Dockerfile(并使用 compose 文件中的文件),或者通过volume.

      volumes:
        - "./farr-api-0.1.0.jar:/app.jar"
    
    Run Code Online (Sandbox Code Playgroud)
  • environment部分需要一个数组 - 您需要JAVA_OPTS在该行前添加破折号:

      environment:
        - JAVA_OPTS=""
    
    Run Code Online (Sandbox Code Playgroud)

您可以在Docker-Compose 文档中找到更多详细信息