Docker-compose 和 Java

问题描述

我对 DevOps 世界很陌生,我目前正在学习它。我正在尝试按照其中一个教程使用 kafka 和与其交互的特定应用程序启动 docker-compose 文件。它需要使用以下参数启动java jar:

java -Dcom.sun.management.jmxremote.port=5555 \
   -Dcom.sun.management.jmxremote.authenticate=false \
   -Dcom.sun.management.jmxremote.ssl=false \
   -jar build/libs/kafka-streams-scaling-all.jar

问题是 - 如何使用选项运行多行命令?我已经这样试过了:

autoscaling:
  exec:
    command:
    - java
    - |
    -Dcom.sun.management.jmxremote.port=5555 \
    -Dcom.sun.management.jmxremote.authenticate=false \
    -Dcom.sun.management.jmxremote.ssl=false \
    -jar build/libs/kafka-streams-scaling-all.jar

但它返回 in "./docker-compose.yml",line 75,column 9 Could not find expected ':' in "./docker-compose.yml",line 76,column 9

和互联网上的一些答案建议使用 > 符号:

autoscaling:
  exec:
    command: >
      java -Dcom.sun.management.jmxremote.port=5555 \
      -Dcom.sun.management.jmxremote.authenticate=false \
      -Dcom.sun.management.jmxremote.ssl=false \
      -jar build/libs/kafka-streams-scaling-all.jar

但是 docker 似乎不理解命令 expected <block end>,but found '-' in "./docker-compose.yml",line 74,column 7

的“-”部分

使用 docker-compose 文件中的选项运行 java jar 的最佳方法是什么?

解决方法

错误的缩进

<service_name>:
    command: |
      java \
      -Dcom.sun.management.jmxremote.port=5555 \
      -Dcom.sun.management.jmxremote.authenticate=false \
      -Dcom.sun.management.jmxremote.ssl=false \
      -jar build/libs/kafka-streams-scaling-all.jar