docker - 如何在docker文件中转义#

标签 docker docker-compose yaml prisma

我有一个docker compose文件,如下所示:

    version: '3'
    services:
    prisma:
        image: prismagraphql/prisma:1.34.10
        restart: always
        ports:
        - '4466:4466'
        environment:
        PRISMA_CONFIG: |
            port: 4466
            databases:
            default:
                connector: mysql
                host: test.mysql.database.azure.com
                database: default@default
                user: rie@dak-prod
                password: ak123#$
                ssl: false
                rawAccess: true
                port: '3306'
                migrations: true
当我尝试使用docker-compose up -d命令时,该命令失败并显示错误:
ERROR: Invalid interpolation format for "environment" option in service "prisma": "port: 4466
databases:
default:
    connector: mysql
    host: est.mysql.database.azure.com
    database: default@default
    user: rie@dak-prod
    password: ak123#$
    ssl: false
    rawAccess: true
    port: '3306'
    migrations: true
"
我确定的原因是密码中的#。如果#不存在,则不会抛出此错误。我如何才能逃逸(使用) docker 组成文件的哈希?

最佳答案

我认为问题不在于#,而在于$符号。
当您的配置需要文字美元符号时,可以使用$$(美元符号)。这也可以防止Compose插值,因此$$允许您引用您不想由Compose处理的环境变量。
因此,在您的情况下,ak123#$必须写为ak123#$$ Reference documentation

关于docker - 如何在docker文件中转义#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63467536/

相关文章:

javascript - 如何POST到外部IP?

linux - docker compose : Error while loading shared libraries: libz. so.1:无法从共享对象映射段:不允许操作

ansible - 如何获得以逗号分隔的名字列表?

formatting - 引用 YAML(对于 Travis CI)

php - 如何解决 Uncaught Error : Class 'mysqli' not found

docker - 无法在 gitlab CI 中构建 docker 镜像

node.js - 使用 Docker 部署 Nuxt,未注册环境变量和意外的 API 调用?

docker - 如何在具有可见浏览器的 docker 容器中运行 Selenium 测试?

java - SnakeYAML:以不同的方式创建一些对象

android - Gradle依赖关系下载Jars