首页 > 解决方案 > spring.datasource.password 的 Docker YAML 环境有符号。我该如何解决这个问题?

问题描述

好的,所以我有一个用于部署 Spring Boot 映像的 yaml 文件。所以我想在我的环境yaml中设置我的spring数据源密码。但是当我使用时docker-compose up,它显示错误

ERROR: Invalid interpolation format for "environment" option in service "apps": "spring.datasource.password= "my_password!@#$" 

我相信发生此错误是因为我的数据源密码中包含符号。我该如何解决?

这是我的 .yml 文件:

version: '3.0'

    services:    
        apps:
                image: student
                ports:
                - 8085:8080
                environment:
                - spring.datasource.url=jdbc:postgresql://192.168.100.3/my_database
                - spring.datasource.username= my_user
                - spring.datasource.password= my_password!@#$

标签: postgresqlspring-bootdockerdocker-composeyaml

解决方案


最后$的 向 Compose 发出信号,表明它需要进行变量替换;如果后面没有实际的环境变量名称,则会出现“无效插值”错误。要解决这个问题:

当您的配置需要文字美元符号时,您可以使用$$(双美元符号)。

所以设置:

- spring.datasource.password=my_password!@#$$

(仔细检查:用户名和密码应该以空格开头吗?您可能需要删除等号后的空格,environment:文档在这里没有显示空格,并且不建议它从值中删除空格。)


推荐阅读