使用 Docker 在 Heroku 上部署 vapor 在 $PORT 上失败

Deploying vapor on Heroku using Docker fails on $PORT

我正在尝试使用 Docker 将我的 Vapor 服务器端应用程序部署到 Heroku(我知道可以使用 Git 进行部署,但我想了解更多关于 Docker). 根据 Heroku 的说法,要使用的端口是动态的,应该从 $PORT 环境变量中获取。

所以我将 Vapor 的默认 Docker 模板修改为:

# Start the Vapor service when the image is run, default to listening on 8080 in production environment
ENTRYPOINT ["./Run"]
CMD ["serve", "--env", "production", "--hostname", "0.0.0.0", "--port", "$PORT"]

但是,当我将其推送并发布到 Heroku 时,我看到它将执行的命令是:

web /bin/bash ./Run serve\ --env\=production\ --hostname\=0.0.0.0\ --port\=$PORT

因此使用各种转义字符并使用 /bin/bash,这不是我指定的。

当我只使用硬编码数字时,它看起来像这样:

web serve --env production --hostname 0.0.0.0 --port 8080

我如何才能让它只用 Heroku 指定的端口号替换 $PORT?

CMD ./Run serve --env production --hostname 0.0.0.0 --port $PORT

看这里:https://github.com/rzeszot/cabs-swift/blob/main/Dockerfile