首页 > 解决方案 > 将 .env 参数替换为文件的内容

问题描述

我想在安装依赖项时将 .env 中的参数替换为文件的内容。

我在特定的 php 容器下的 docker-compose.yml 中有这个:

command:
    - /bin/sh
    - -c
    - |
        date +%s | sha256sum | base64 | head -c 32 > passphrase.txt
        openssl genrsa -out config/jwt/private.pem -aes256 -passout file:passphrase.txt 4096
        openssl rsa -passin file:passphrase.txt -pubout -in config/jwt/private.pem -out config/jwt/public.pem
        composer install
        php bin/console --no-interaction doctrine:migrations:migrate

现在 composer 运行时,JWT_PASSPHRASE 的参数应该替换为 passphrase.txt 的内容:

###> lexik/jwt-authentication-bundle ###
# Key paths should be relative to the project directory
JWT_PRIVATE_KEY_PATH=config/jwt/private.pem
JWT_PUBLIC_KEY_PATH=config/jwt/public.pem
JWT_PASSPHRASE=???
JWT_TOKEN_TTL=3600
###< lexik/jwt-authentication-bundle ###

那可能吗?

最好的,克里斯蒂安

标签: phpsymfonyenvironment-variables

解决方案


我通过导出 JWT_PASSPHRASE 解决了这个问题。我不需要将密码短语写入文件。

export JWT_PASSPHRASE=$(date +%s | sha256sum | base64 | head -c 32)
openssl genrsa -out config/jwt/private.pem -aes256 -passout pass:${JWT_PASSPHRASE}
openssl rsa -passin pass:${JWT_PASSPHRASE} -pubout -in ./config/jwt/private.pem -out ./config/jwt/public.pem

推荐阅读