我有一个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/