如何通过docker-compose.yml将配置参数传递给Flink Docker映像?

时间:2019-09-27 10:47:52

标签: docker docker-compose yaml apache-flink

我想将以下配置参数传递给docker-compose.yml以获取flink docker映像。

state.checkpoints.dir: s3://.../flink/checkpoint
state.savepoints.dir: s3://.../flink/savepoint
s3.access-key: ...
s3.secret-key: ...
jobmanager.execution.failover-strategy: region

有人可以帮我吗?

docker image-flink:1.9.0

2 个答案:

答案 0 :(得分:1)

将配置文件夹安装到容器中

您可以创建一个卷,该卷将主机系统中的文件夹安装到Docker容器中Flink配置的位置。

Flink Operations Playground这样做是为了将自定义配置传递给Flink Docker映像。

docker-compose.yaml中JobManager的条目可能如下所示:

  jobmanager:
    image: flink:1.9-scala_2.11
    command: "jobmanager.sh start-foreground"
    ports:
      - 8081:8081
    volumes:
      - ./conf:/opt/flink/conf
    environment:
      - JOB_MANAGER_RPC_ADDRESS=jobmanager

它将将./conf文件夹(应位于docker-compose.yaml旁边)安装到Docker容器中的/opt/flink/conf上,该容器是FLink进行配置的位置。

通过环境变量传递参数

另一种选择是通过环境变量传递配置参数。

用于启动Flink容器的docker-entrypoint.sh脚本似乎将FLINK_PROPERTIES变量的内容附加到配置文件中。但是,我还没有使用这种方法。

答案 1 :(得分:0)

如果有人在寻找答案,请在FLINK_PROPERTIES的整个条目周围加上双引号,以免冒号:

jobmanager:
    image: flink:1.9-scala_2.11
    command: "jobmanager.sh start-foreground"
    ports:
      - 8081:8081
    volumes:
      - ./conf:/opt/flink/conf
    environment:
      - JOB_MANAGER_RPC_ADDRESS=jobmanager
      - "FLINK_PROPERTIES=a: b \nc: d"