Docker-compose无法运行jar文件,但与Dockerfile一起工作

我configuration了下一个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" ] 

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

docker工人,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" ] 

它引发了下一次失败:

 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 

我认为这可能是sintax问题

Docker-compose 1.8.1版本

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

  • Docker-Compose不支持add命令。 如果要将文件添加到容器中,则必须在Dockerfile执行此Dockerfile (并使用来自撰写文件的文件),或者通过volume映射文件。

      volumes: - "./farr-api-0.1.0.jar:/app.jar" 
  • environment部分需要一个数组 – 你需要在JAVA_OPTS行前添加一个短划线:

      environment: - JAVA_OPTS="" 

您可以在Docker-Compose文档中find更多的细节