主管子进程不读取环境变量
在我的 go 程序中,我使用 os.Getenv("DB_PASSWORD") 来获取环境变量 DB_PASSWORD。 在开发过程中,我使用 godotenv
和 GNU Make 来构建和启动程序。在生产中,我使用主管来管理进程(主要是为了它的守护进程和自动重启功能)。
但是对于主管,我的 go 程序无法访问任何环境变量(使用 export key='value' 设置)。
我已经检查了 具有环境变量的主管 部分,它是仍然不工作。 我已经完成了 supervisorctl reread
和 supervisorctl update
,仍然没有运气。 如何让主管子进程(我的程序)读取环境变量
[program:program_name]
command=/var/www/program_name/bin/program_name -environment production -port 4041 --DB_PASSWORD=%(ENV_DB_PASSWORD)s
directory=/var/www/program_name
environment=DB_PASSWORD=value-here
autorestart=true
autostart=true
stdout_logfile=/var/www/program_name/logs/supervisord.log
stderr_logfile=/var/www/program_name/logs/supervisord_err.log
stdout_logfile_maxbytes=5MB
stderr_logfile_maxbytes=5MB
logfile_backups=3
loglevel=info
In my go program, I'm using os.Getenv("DB_PASSWORD")
to grab the environment variable DB_PASSWORD
.
While in development, I use godotenv
and GNU Make to build and start the program. In production, I'm using supervisor to manage the process (basically for its daemonizing and auto-restart capabilities).
But with supervisor, my go program is unable to access any environment variables (set using export key='value').
I've checked out supervisor with environment variables section and it's still not working.
I've done supervisorctl reread
and supervisorctl update
, still no luck.
How can I get supervisor child process (my program) to read environment variables
[program:program_name]
command=/var/www/program_name/bin/program_name -environment production -port 4041 --DB_PASSWORD=%(ENV_DB_PASSWORD)s
directory=/var/www/program_name
environment=DB_PASSWORD=value-here
autorestart=true
autostart=true
stdout_logfile=/var/www/program_name/logs/supervisord.log
stderr_logfile=/var/www/program_name/logs/supervisord_err.log
stdout_logfile_maxbytes=5MB
stderr_logfile_maxbytes=5MB
logfile_backups=3
loglevel=info
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论