docker - openresty:alpine docker容器中的set_by_lua和os.getenv

标签 docker nginx lua docker-compose openresty

我正在official openresty docker镜像中运行alpine-fat nginx,openresty进程从nobody用户开始。

我需要使用下一个字符串设置nginx变量:

set_by_lua $var 'return os.getenv("ENV_VAR")';
docker-compose.yml包含下一个块:
build:
  context: .
  dockerfile: ./Dockerfile.nginx
environment:
  - ENV_VAR=value

但是,nginx worker进程似乎没有获得其值(value),并且$var仍然为空。

我试图将export ENV_VAR=value添加到/etc/profile文件,但是没有用。
我尝试用nginx用户运行openresty,但它也看不到ENV_VAR变量的值。

如果可以的话,我该如何使它起作用?

最佳答案

尝试将env ENV_VAR;添加到您的nginx配置中。默认情况下,nginx将丢弃所有环境变量,这将允许保存它。
https://nginx.org/en/docs/ngx_core_module.html#env

Syntax: env variable[=value];

Default:

env TZ;

Context: main

By default, nginx removes all environment variables inherited from its parent process except the TZ variable. This directive allows preserving some of the inherited variables, changing their values, or creating new environment variables.

关于docker - openresty:alpine docker容器中的set_by_lua和os.getenv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47969848/

相关文章:

docker - 在主机上运行的Docker访问端口

linux - Nginx: curl: (60) SSL证书问题:无法获取本地颁发者证书

ruby-on-rails - Rails 应用程序在遇到重负载时不断崩溃

android - (Client Authentication) 添加ssl客户端证书到智能设备

python - 如何获取从 Scrapy Splash 请求生成的 cookie?

DockerHub 在自动构建中设置标签别名

docker - 如何找出我的 Docker 服务处于待处理状态的原因?

docker - Spring Boot 尝试连接到 Mongo localhost

lua - "io.popen"函数的目的是什么?

c - Lua C API - 将数据附加到协程