我正在尝试在MS Azure上部署停靠的React JS应用程序(使用ngnix)。使用Azure容器注册表进行相同操作。
这是我的Dockerfile
FROM node:14.17.0 as build
WORKDIR /app
ENV PATH /app/node_modules/.bin:$PATH
COPY package.json ./
COPY package-lock.json ./
RUN npm ci --silent
RUN npm install react-scripts -g --silent
COPY . .
RUN npm run build
#prepare nginx
FROM nginx:stable-alpine
COPY --from=build /app/build /usr/share/nginx/html
#fire up nginx
EXPOSE 80
CMD ["nginx","-g","daemon off;"]
能够在本地机器上以容器的形式运行映像,并且运行良好。
docker run -itd --name=ui-container -p 80:80 abc.azurecr.io:latest
但在Azure应用程序服务/容器服务上运行映像后,由于无法ping端口,问题开始出现。错误-容器未响应端口上的HTTP ping:80,站点启动失败。请查看容器日志以进行调试
这是应用程序服务日志上可用的Docker运行命令
docker run -d --expose=80 --name id_0_f8823503 -e WEBSITES_ENABLE_APP_SERVICE_STORAGE=false -e WEBSITES_PORT=80 -e WEBSITE_SITE_NAME=id -e WEBSITE_AUTH_ENABLED=False -e WEBSITE_ROLE_INSTANCE_ID=0 -e WEBSITE_HOSTNAME=id.azurewebsites.net -e WEBSITE_INSTANCE_ID=af26eeb17400cdb1a96c545117762d0fdf33cf24e01fb4ee2581eb015d557e50 -e WEBSITE_USE_DIAGNOSTIC_SERVER=False i.azurecr.io/ivoyant-datamapper
我看到的原因是没有-p 80:80发现在上述docker运行命令。我已经尝试了多种方法来解决这个问题,但没有为我工作。尝试添加密钥:端口值:80在配置应用程序设置键中:网站端口值:80在配置应用程序设置中
任何帮助/领导都应该非常感谢。请投票者发表评论?
1条答案
按热度按时间l7mqbcuq1#
默认情况下,应用程序服务监听端口80/443,并将流量转发到端口80上的容器。如果容器监听端口80,则无需设置WEBSITES_PORT应用程序设置。不需要**-p 80:80参数。
仅当容器侦听其他端口号时,才将WEBSITES_PORT**设置为容器的端口号。
现在,为什么App Service会报告该错误?这可能是因为你的应用在启动时失败。请尝试启用应用日志以查看是否会获得更多信息。