首页 > 解决方案 > 如何将 .env 或 docker-compose.yaml 文件中的变量传递给 nginx 服务器文件

问题描述

我有一个docker-compose.yaml文件和一个.env文件。如果我在 env 文件中声明一个变量,我可以在 docker-compose 中访问它。所以,这很好。

但是,我想更改 nginx 的default.conf属性,即server_name = xxx从我在 env 中提供的值生成。

所以,我的环境看起来像这样(只分享一部分)

#.env
NGINX_SERVER_NAME=dev.example

在 docker-compose 我在这里提到了这个变量:

nginx:
  container_name: ${APP_NAME}-server
  environment:
    - SERVER_NAME=${NGINX_SERVER_NAME}

default.conf我简单地调用变量是这样的:

server_name ${SERVER_NAME};

我期待default.conf包含server_name dev.example,但它包含令牌,即${SERVER_NAME}

我怎样才能实现我正在寻找的东西?谢谢

标签: dockernginx

解决方案


这对我来说似乎没问题。尝试在撰写文件中的环境变量周围使用引号。

nginx:
  container_name: ${APP_NAME}-server
  environment:
    - SERVER_NAME="${NGINX_SERVER_NAME}"

或尝试像这样编写您的环境变量。

nginx:
  container_name: ${APP_NAME}-server
  environment:
    SERVER_NAME: "${NGINX_SERVER_NAME}"

推荐阅读