在docker撰写文件集环境列表

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

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

aerospike.hosts = ["192.168.33.10"] aerospike.hosts = ${?DS_AEROSPIKE_HOSTS} 

我可以如何设置我的泊坞窗撰写文件中的主机列表?

 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"]' 

这个格式是错误的DS_AEROSPIKE_HOSTS:'[“192.168.33.10”]'

我相信你不能将一个数组传递给ENVvariables。 但是您可以将其作为string传递,然后在应用程序中parsingstring。

 environment: - DS_AEROSPIKE_HOSTS='192.168.33.10,192.168.33.11' 

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

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

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

你有几个select:

  1. 你可以在你的Docker版本中包含一个docker.conf文件,并将你想要的设置注入到这个文件中。 然后你可以包含你的application.confdocker.conf文件。 例如添加到你的application.conf

     include "docker.conf" 
  2. 您可以使用环境variables传递一个string值(如Stanislav所build议的),然后将其转换为序列。 这样做的惯用方法是创build一个ConfigLoader ,然后使用它将一个String转换为一个Seq[String] 。 例如:

     implicit val stringSeqLoader: ConfigLoader[Seq[String]] = ConfigLoader(_.getString).map(_.split(','))