Mar*_*jan 6 nginx heroku docker dockerfile
我只是对Dockerfile进行了一些修改,以便在Heroku上使用Nginx运行它。Heroku的特别之处在于,所有内容都以非root用户身份运行。第二种特定行为是使用来自Heroku本身的随机端口,您不能对其进行修改。它们提供了env $ PORT,您应该将其绑定到nginx。如果Heroku识别到某项未绑定到该端口,则会停止整个容器。问题是:
如何将nginx绑定到给定的env变量,以便在nginx-site.conf中具有动态端口?我试图在Dockefile中使用如下内容:
env PORT;在nginx.conf并listen PORT_from_env;在nginx的-site.conf
还试图listen 80;在nginx的-site.conf并RUN /bin/sed -i "s/listen 80/listen ${PORT}/" /etc/nginx/sites-available/default.conf在Dockerfile
我绝对超能力。有人有想法或可以帮忙吗?这将非常有帮助!
更多信息:
通过遵循以下示例,我将其用于我的应用程序:
第1步:听$PORT的default.conf.template
server {
listen $PORT default_server;
location / {
root /usr/share/nginx/html;
index index.html;
}
}
Run Code Online (Sandbox Code Playgroud)
步骤2:将此指令添加到您的Dockerfile
COPY default.conf.template /etc/nginx/conf.d/default.conf.template
Run Code Online (Sandbox Code Playgroud)
第3步:在您的末尾添加Dockerfile
CMD /bin/bash -c "envsubst '\$PORT' < /etc/nginx/conf.d/default.conf.template > /etc/nginx/conf.d/default.conf" && nginx -g 'daemon off;'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1693 次 |
| 最近记录: |