首页 > 解决方案 > Docker .env-File 中设置的变量如何在 application.yml 中使用?

问题描述

我试过:在 prod.env 中:HOST_PUBLIC=test.mydomain.com

在 application-prod.yml 中:

jhipster:
...
    mail: 
        from: ...
        base-url: ${HOST_PUBLIC}

该变量未被识别,我只是将 ${HOST_PUBLIC} 作为输出,与"${HOST_PUBLIC}".

我还尝试使用反引号 base-url: `${HOST_PUBLIC}`,这导致应用程序崩溃

我只想获取正确的 url 来构建一个发送给用户的 html 以更改密码。

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
    <p>
        <a th:with="url=(@{|${baseUrl}/#/reset/finish?key=${user.resetKey}|})" th:href="${url}"
        th:text="${url}">Login link</a>
    </p>
</body>

目前邮件看起来像这样${HOST_PUBLIC}/#/reset/finish?key=xxx

标签: springspring-bootdockerenvironment-variables

解决方案


这不起作用的原因是,在 .env 文件中设置的变量仅可用于 docker-compose 文件,而不是像环境变量那样全局,并且无法从 spring-application .yml 文件中访问。为了使变量可以全局访问,我设置了

environment:
  - HOST_PUBLIC=${HOST_PUBLIC}

也可以使hole .env 文件可用。


推荐阅读