Heroku (Docker) nginx 中的 PORT 环境变量

2024-01-10

我只需对 Dockerfile 进行一些修改,即可在 Heroku 上使用 nginx 运行它。 Heroku 的特别之处在于,一切都以非 root 身份运行。第二个特定行为是使用来自 Heroku 本身的随机端口,并且无法修改。他们提供了 env $PORT,您应该将其绑定到 nginx。如果 Heroku 发现某些东西没有绑定到该端口,它就会停止整个容器。问题是:

如何将 nginx 绑定到给定的环境变量,以便在 nginx-site.conf 中拥有动态端口? 我尝试在以下内容中使用类似的内容Dockerfile:

env PORT; in nginx.conf and listen PORT_from_env; in the nginx-site.conf也尝试过listen 80; in the nginx-site.conf and RUN /bin/sed -i "s/listen 80/listen ${PORT}/" /etc/nginx/sites-available/default.conf in the Dockerfile

我绝对超出了我的能力范围。有人有想法或可以提供帮助吗?这将非常有帮助!


更多信息:

  • https://devcenter.heroku.com/articles/dynos#web-dynos https://devcenter.heroku.com/articles/dynos#web-dynos

我通过以下方式让它为我的应用程序工作这个例子 https://github.com/rjoonas/heroku-docker-nginx-example :

Step 1:$PORT in default.conf.template

server {
  listen $PORT default_server;

  location / {
    root   /usr/share/nginx/html;
    index  index.html;
  }
}

Step 2:将此指令添加到您的Dockerfile

COPY default.conf.template /etc/nginx/conf.d/default.conf.template

Step 3:添加这个在end你的Dockerfile

CMD /bin/bash -c "envsubst '\$PORT' < /etc/nginx/conf.d/default.conf.template > /etc/nginx/conf.d/default.conf" && nginx -g 'daemon off;'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Heroku (Docker) nginx 中的 PORT 环境变量 的相关文章

随机推荐

  • 在无向图中记录 DFS 搜索中的前驱

    我试图使用此线程中的代码 提升DFS back edge https stackoverflow com questions 19346820 boost dfs back edge 19391511 noredirect 1 commen
  • String.count() 是如何工作的? [复制]

    这个问题在这里已经有答案了 我是 python 和学习的新手 如所给出的here https www tutorialspoint com python string count htm count 方法在字符串上使用时给出子字符串在字符串
  • 如何为Java类创建两个接口,一个只读,一个读写?

    我正在用 Java 为一款两人纸牌游戏编写一个游戏引擎 我的学生将为该游戏编写 AI 玩家 人工智能玩家将轮流在他们面前的 桌子 的 场地 上打牌 他们可以用自己场上的牌攻击对方场上的牌 卡片可以面朝上或面朝下 GameEngine 类允许
  • 如何根据构建变体更改 AndroidManifest.xml 文件?

    我有一个具有多个构建变体的应用程序 这些变体用于为不同公司构建同一应用程序的版本 因此 我有几个不同的变体来构建不同的应用程序 com acme app1 com schmoe app2 com yop app3 etc build gra
  • 指定服务返回字段的最佳方法

    我们使用 Java EE 7 和 WildFly 9 来开发移动 Web 应用程序的自定义后端 后端是一个经典的三层系统 具有通信逻辑 JAX RS 业务逻辑 Session EJB 和持久层 Hibernate 业务逻辑层由一组服务组成
  • 压缩输出与 Go to Ruby 实现不同

    我正在实现一个程序 将文件压缩为 git blob 并适当存储它 我有一个红宝石参考实现 https github com sgen git deflate blob bugfix deflate deflate file这是基于git 书
  • “找不到主类。程序将退出”

    我正在尝试运行 SQuirreL SQL 我已经下载并安装了它 但是当我尝试运行它时 我收到以下错误消息 Java 虚拟机启动器 无法找到主类 程序将会退出 我明白了这一点 但我不知道如何解决它 有什么帮助吗 更多信息 我使用的是 Wind
  • Win32_Product 的替代品?

    尝试查询后Win32 Product寻找软件版本时 我无法理解为什么结果如此缓慢 比查询慢15倍Win32 service or Win32 process 所以来这里看看我是否遗漏了什么 我发现其他人也报告了同样的问题 而这个articl
  • 如何查看 JDBC / MySQL 的 TRANSACTION_REPEATABLE_READ 操作?

    我的计算机上当前运行 MySQL 服务器 5 7 16 并且此服务器上名为 Sakila 的数据库中有此示例行 mysql gt SELECT FROM actor WHERE last name tugay actor id first
  • 使用 vba 查看和隐藏 Excel 中的列

    我有一个工作表 其中 B G 列中包含值 在单元格 A1 的同一张表中 我使用数据验证创建了一个下拉列表 其中包含 A B 和 C 等值 我需要的是 当我选择单元格值 A 时 B C 列需要可见 而其他列应该对 D G 隐藏 以同样的方式
  • 如何实现多个PanGestures(可拖动视图)?

    我想要几个可以拖放的对象 这是我移动一个对象的代码 在 vacawama 的帮助下 import UIKit class ViewController UIViewController IBOutlet weak var panView U
  • 在后台运行进程,同时用户仍然可以使用 UI

    我试图在后台运行数据库获取过程而不锁定用户界面 目前我有一个按钮可以执行此操作 但我希望它是自动的 以便在用户浏览当前结果时可以获得更多结果 这是按钮执行的代码 我想使其自动执行而不锁定用户界面 此外 如果有一种方法可以暂停该过程 但如果用
  • EPPlus - 我是否需要对 ExcelRange 等对象调用 Dispose?

    我正在使用 C EPPlus 库创建 Excel 文档 ExcelWorksheet ws pkg Workbook Worksheets Add Sheet1 ws Cells E3 Value Foo ws Cells F3 Value
  • 使用桌面模式在手机上打开 flutter web

    我目前正在构建一个 flutter web 我已将屏幕 ui 分为 3 个部分 桌面 选项卡和手机的 ui 因此 假设当屏幕宽度 X1000 桌面 ui 时 到目前为止 它运行良好 但问题是 当我在手机浏览器中打开它并使用桌面模式 桌面站点
  • 下划线绑定 vs jQuery.proxy vs Native 绑定

    我在回调中遇到一些上下文问题 我用谷歌搜索并发现几个选项 本机绑定 旧浏览器不支持 jQuery 代理 下划线绑定 如果我不需要支持旧的浏览器 我肯定会使用本机绑定 应该注意这些之间有什么显着差异吗 这些可以用作致电 申请的替代方法吗 AF
  • 读取数据时删除包含某些字符串的列:python

    我正在读取目录中的 txt 文件 并希望删除包含某些特定字符串的列 for file in glob iglob files txt recursive True cols list pd read csv file nrows 1 df
  • 强制 Internet Explorer 9 使用 IE 9 模式

    我正在使用 HTML5 文档类型 其顶部附近带有 X UA Compatible 元标记
  • 如何在 Swift 中将 Int 转换为 NSData?

    在 Objective C 中我使用以下代码 转换一个Int变量变为NSData 一个字节包 int myScore 0 NSData packet NSData dataWithBytes myScore length sizeof my
  • 如何从其余客户端推送通知以进行测试

    您好 我正在尝试将通知从其余客户端推送到 Android 应用程序 我正在做如下 URL https android googleapis com gcm send Method POST Headers Authorization my
  • Heroku (Docker) nginx 中的 PORT 环境变量

    我只需对 Dockerfile 进行一些修改 即可在 Heroku 上使用 nginx 运行它 Heroku 的特别之处在于 一切都以非 root 身份运行 第二个特定行为是使用来自 Heroku 本身的随机端口 并且无法修改 他们提供了