Node.js 停靠的React应用程序无法绑定到Heroku上的$PORT
我正在尝试将一个停靠的React应用程序部署到Heroku,但继续获取 “R10:无法绑定到Heroku上的$PORT错误” 当我在本地运行docker时,docker应用程序运行得非常好 我的docker文件如下所示:Node.js 停靠的React应用程序无法绑定到Heroku上的$PORT,node.js,reactjs,docker,heroku,web-deployment,Node.js,Reactjs,Docker,Heroku,Web Deployment,我正在尝试将一个停靠的React应用程序部署到Heroku,但继续获取 “R10:无法绑定到Heroku上的$PORT错误” 当我在本地运行docker时,docker应用程序运行得非常好 我的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 n
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"]
我按照在线解决方案将serve上的“侦听”端口从Heroku更改为$port。现在,根据日志,应用程序在Heroku的端口上提供服务,但仍然需要
“绑定到$PORT失败错误”
请帮忙 >变量替换在CMD中没有发生,这就是为什么代码> ${t} /COD>被认为是文本而不是消耗它的值。 与shell表单不同,exec表单不调用命令shell。这意味着正常的shell处理不会发生。例如,
CMD[“echo”,“$HOME”]
不会对$HOME
执行变量替换。如果需要shell处理,则可以使用shell表单或直接执行shell,例如:CMD[“sh”、“-c”、“echo$HOME”]
。当使用exec表单并直接执行shell时,就像shell表单一样,执行环境变量扩展的是shell,而不是docker
将CMD更改为
CMD ["sh", "-c", "serve -l tcp://0.0.0.0:${PORT} -s /app/build"]