在 docker compose 文件中将环境设置为列表

Sla*_*Muz 5 scala playframework docker docker-compose

我有一个使用 Aerospike 的应用程序

在 application.conf 中,我有一个可以从环境中重写的参数

aerospike.hosts = ["192.168.33.10"]
aerospike.hosts = ${?DS_AEROSPIKE_HOSTS}
Run Code Online (Sandbox Code Playgroud)

我如何在我的 docker compose 文件中设置主机列表?

version: '3.1'

services:
     ds-aerospike-db:
        image: aerospike/aerospike-server
        restart: always
        volumes: 
          - volume:/opt/aerospike/etc
        command: ["--config-file","/opt/aerospike/etc/aerospike.conf"]
        ports:
          - 3000:3000
     dashboard:
        image: dashboard:0.1
        restart: always
        ports:
            - 9000:9000
        environment:
         DS_AEROSPIKE_HOSTS: '["192.168.33.10"]'
Run Code Online (Sandbox Code Playgroud)

这种格式是错误的 DS_AEROSPIKE_HOSTS: '["192.168.33.10"]'

Sta*_*hin 3

我相信你不能将数组传递给 ENV 变量。但您可以将其作为字符串传递,然后在应用程序中解析字符串。

environment:
  - DS_AEROSPIKE_HOSTS='192.168.33.10,192.168.33.11'
Run Code Online (Sandbox Code Playgroud)

有效的 docker-compose.yml 语法在文档中说明 https://docs.docker.com/compose/environment-variables/

我不熟悉 scala,但我相信你可以做类似的事情

aerospike.hosts = ${?DS_AEROSPIKE_HOSTS}.split(',')