Docker变量什么时候可用?

阿龙奇克

我正在使用Rails进行一些工作,在数据库配置中,我有以下变量:

host: <%= ENV['MYSQL_PORT_3306_TCP_ADDR'] %>

Rails一直失败,因为它说它试图通过套接字连接,这向我表明该值是空的(这就是Rails退回的方式)。

但是,每次我通过登录到容器时,都会docker exec正确设置环境变量。

后来我出于调试目的将其更改为以下内容:

host: 172.17.0.15 # <%= ENV['MYSQL_PORT_3306_TCP_ADDR'] %>

而且效果很好(这是先前报告的值)。

所以我的问题是,在docker runDocker的什么时候设置了环境变量?我在这里做错什么了吗?我想我很高兴将nginx作为Dockerfile中的最后一个命令进行反弹,但是如果仍然没有设置环境变量,那感觉不会解决任何问题。

更新

我正在使用此网页上的Dockerfile- https: //rossfairbanks.com/2015/03/06/rails-app-on-docker-using-passenger-image.html

更新2 Docker Run:docker run --rm --name nginx -p 80:80 --link mysql:mysql myNginxImage

格雷格

引用的Dockerfile具有:

# Use baseimage-docker's init system.
CMD ["/sbin/my_init"]

如果您在执行docker run命令时未覆盖它,那么这就是“入口点”(我猜,这个问题也没有发布)。接下来将要进行一系列猜测,但是,我认为我是对的:-)

首先,文档指出:

乘客的工作方式类似于mod_ruby,mod_nodejs等。它将Nginx更改为应用程序服务器,并从Nginx运行您的应用程序。因此,要使您的Web应用程序正常运行,您只需在Nginx中添加一个虚拟主机条目即可描述您的应用程序所在的位置,剩下的便由Passenger负责。

然后,稍后在描述Nginx启动时:

默认情况下,Nginx清除其子进程(Passenger是其中之一)的所有环境变量(TZ除外)。这就是为什么您使用docker run -e,Docker链接和/ etc / container_environment设置的任何环境变量都不会到达Nginx的原因。

对于初始化行为,在启动进程之前先清除env变量,这是相当典型的。由于nginx的环境变量已清除,因此其随后启动的任何进程也将清除env vars。幸运的是,它们告诉您如何将变量传播到子进程:

要保留这些变量,请将以* .conf结尾的Nginx配置文件放在目录/etc/nginx/main.d中,在其中告诉Nginx保留这些变量。例如,当链接PostgreSQL容器或MongoDB容器时:

然后他们展示了一个例子。您可以在与Dockerfile相同的目录中创建一个名为mysql-env.conf的文件,该文件包含:

env MYSQL_PORT_3306_TCP_ADDR;

然后,在您的Dockerfile中,添加以下行:

ADD mysql-env.conf /etc/nginx/main.d/mysql-env.conf

这应该为您泄漏env变量。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

什么时候最好加密变量?

来自分类Dev

什么时候需要导出变量?

来自分类Dev

我什么时候需要 Docker 卷?

来自分类Dev

什么时候使用rerender变量,什么时候在React中使用常规变量?

来自分类Dev

什么时候是局部变量,什么时候是全局变量?

来自分类Dev

16.04什么时候在AWS上正式可用?

来自分类Dev

什么时候用实例变量渲染,什么时候重定向?

来自分类Dev

什么时候将数组变量视为指针,什么时候将其视为简单数组?

来自分类Dev

什么时候重构?

来自分类Dev

什么时候解密?

来自分类Dev

什么时候应该使用这种int变量?

来自分类Dev

什么时候在Swift中使用静态常量和变量?

来自分类Dev

什么时候可以在多维数组内部访问定义的变量?

来自分类Dev

什么时候为c中的变量分配内存?

来自分类Dev

我什么时候应该引用CMake变量?

来自分类Dev

什么时候应该初始化Golang变量

来自分类Dev

什么时候应该使用变量与原始值?

来自分类Dev

什么时候不使用Java中的volatile变量

来自分类Dev

什么时候在Ruby中使用常量而不是实例变量?

来自分类Dev

什么时候需要在Javascript函数外声明变量?

来自分类Dev

什么时候在C中定义全局变量?

来自分类Dev

什么时候变量是AnyObject但不是NSObject

来自分类Dev

什么时候可以在多维数组内部访问定义的变量?

来自分类Dev

什么时候为c中的变量分配内存?

来自分类Dev

什么时候创建局部变量堆栈?

来自分类Dev

什么时候在C中定义全局变量?

来自分类Dev

什么时候不使用Java中的volatile变量

来自分类Dev

paypal 什么时候会发回自定义变量?

来自分类Dev

Docker CMD-什么时候应该使用外壳形式?

Related 相关文章

热门标签

归档