如何在 Docker Compose 文件环境变量中转义此 JSON 字符串?

Saq*_*Ali 4 yaml escaping docker docker-compose

这是我的 docker-compose yaml 文件。

version: '2.1'

services:
  myservice:
    environment:
      - MYENVVAR={"1": "Hello"}
Run Code Online (Sandbox Code Playgroud)

当我运行时,这给了我以下解析错误 docker-compose

ERROR: yaml.parser.ParserError: while parsing a block mapping
  in "./my_docker_compose_.yml", line 6, column 9
expected <block end>, but found '}'
  in "./my_docker_compose_.yml", line 6, column 111
Run Code Online (Sandbox Code Playgroud)

如何正确转义我的 JSON 对象,以便将其作为环境变量的值发送到容器中MYENVVAR

Ale*_*kin 6

您应该将此变量定义为:'FOOBAR={"foo": "bar"}'

简而言之:

version: '3.3'
services:
    nginx:
        ports:
            - '80:80'
        volumes:
            - '/var/run/docker.sock:/tmp/docker.sock:ro'
        restart: always
        logging:
            options:
                max-size: 1g
        environment:
            - 'FOOBAR={"foo": "bar"}'
            - a=test
        image: nginx
Run Code Online (Sandbox Code Playgroud)

在 docker bug tracking system 上提出了类似的问题:

https://github.com/docker/compose/issues/3878

您可以通过访问网页来在线验证或试验 docker-compose 设置:https : //composerize.com/