【问题标题】:Escaping colons in Docker Compose value在 Docker Compose 值中转义冒号
【发布时间】:2023-02-17 08:52:30
【问题描述】:

我正在尝试将一些参数传递给我的健康检查测试:

version: '3.8'

services:
    mongodb:
        image: mongo
        container_name: mongodb
        environment:
            - MONGO_INITDB_ROOT_USERNAME=${MONGODB_USER}
            - MONGO_INITDB_ROOT_PASSWORD=${MONGODB_PASS}
        volumes:
            - ./db:/data/db
        networks:
            - proxy
        restart: unless-stopped
        healthcheck:
            test: test $$(echo "rs.initiate({_id: 'rs0', members: [{_id: 1, 'host': 'mongodb:27017'}]}).ok || rs.status().ok" | mongosh -u $${MONGO_INITDB_ROOT_USERNAME} -p $${MONGO_INITDB_ROOT_PASSWORD} --quiet) -eq 1
            interval: 10s
            start_period: 30s

我收到此错误:

yaml: mapping values are not allowed in this context

如果我删除冒号 (:) 它会起作用。如何在我的测试值中转义这些冒号?

【问题讨论】:

    标签: docker-compose


    【解决方案1】:

    我能够找到解决方案。冒号需要用引号转义,为了清楚起见,我在其他地方使用了双引号:

    test: test $$(echo 'rs.initiate({_id':' "rs0", members':' [{_id':' 1, "host"':' "mongodb':'27017"}]}) || rs.status().ok' | mongosh -u $${MONGO_INITDB_ROOT_USERNAME} -p $${MONGO_INITDB_ROOT_PASSWORD} --quiet) -eq 1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-23
      • 2013-01-30
      • 1970-01-01
      • 1970-01-01
      • 2015-10-21
      • 2017-06-04
      • 2015-08-21
      • 1970-01-01
      相关资源
      最近更新 更多