【问题标题】:Dockerized React App failed to bind to $PORT on HerokuDockerized React App 无法绑定到 Heroku 上的 $PORT
【发布时间】:2020-04-17 05:15:51
【问题描述】:

我正在尝试将 Dockerized React 应用程序部署到 Heroku,但继续获取

“R10: 无法绑定到 Heroku 上的 $PORT 错误”

当我在本地运行 docker 时,dockerized 应用程序运行得非常好。

我的 docker 文件如下所示:

FROM node:10.15.3
RUN mkdir -p /app
WORKDIR /app
COPY . .

ENV PATH /app/node_modules/.bin:$PATH
COPY package.json /app/package.json
RUN npm install --verbose
RUN npm install serve -g -silent

# start app
RUN npm run build
CMD ["serve", "-l", "tcp://0.0.0.0:${PORT}", "-s", "/app/build"]

我按照在线解决方案将服务上的“侦听”端口从 Heroku 更改为 $PORT。现在根据日志,应用程序在 Heroku 的端口上提供服务,但仍然得到 ​​p>

“未能绑定到 $PORT 错误”

请帮忙!

【问题讨论】:

    标签: node.js reactjs docker heroku web-deployment


    【解决方案1】:

    在 CMD 中不会发生变量替换,这就是为什么 ${PORT} 被视为文本而不是使用其值的原因。

    与 shell 形式不同,exec 形式不调用命令 shell。这意味着不会发生正常的外壳处理。例如,CMD [ "echo", "$HOME" ] 不会对 $HOME 进行变量替换。如果你想要 shell 处理,那么要么使用 shell 形式,要么直接执行 shell,例如:CMD [ "sh", "-c", "echo $HOME" ]。当使用 exec 形式并直接执行 shell 时,与 shell 形式一样,是 shell 进行环境变量扩展,而不是 docker。

    docker-cmd

    把CMD改成

    CMD ["sh", "-c", "serve -l tcp://0.0.0.0:${PORT} -s /app/build"]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-17
      • 2020-06-10
      • 2019-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多