You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker化React应用部署至Azure App Service后启动失败排查

解决方案:Azure App Service容器化React+Nginx应用端口ping失败问题

核心原因

本地运行正常是因为端口映射允许宿主机访问容器端口,但Azure App Service的健康检测是从内部网络直接访问容器的80端口,而默认Nginx配置可能仅监听localhost(127.0.0.1),导致外部无法连接。

修复步骤

1. 自定义Nginx配置文件

在项目根目录创建nginx.conf,确保Nginx监听所有网卡的80端口:

events {
    worker_connections 1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    server {
        listen 80 default_server;
        listen [::]:80 default_server;

        root /usr/share/nginx/html;
        index index.html index.htm;

        location / {
            try_files $uri $uri/ /index.html;
        }
    }
}

2. 修改Dockerfile替换默认Nginx配置

更新Dockerfile,将自定义配置复制到Nginx的配置目录:

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
# 新增:复制自定义Nginx配置
COPY nginx.conf /etc/nginx/nginx.conf

#fire up nginx
EXPOSE 80
CMD ["nginx","-g","daemon off;"]

3. 验证容器监听状态(本地测试)

重新构建镜像并运行后,进入容器执行以下命令,确认Nginx监听0.0.0.0:80:

docker exec -it <容器ID> sh
netstat -tulpn | grep nginx

输出应包含0.0.0.0:80,而非仅127.0.0.1:80。

4. 检查Azure容器日志

如果问题仍存在,在Azure门户进入应用服务→日志→容器日志,查看Nginx启动报错信息(比如配置文件语法错误、文件权限问题等)。

补充说明

Azure App Service的WEBSITES_PORT=80配置已经正确,无需额外修改端口映射参数——App Service内部会自动处理容器端口的路由,核心问题是容器内服务必须监听所有网卡(0.0.0.0)而非仅本地回环地址。

内容的提问来源于stack exchange,提问作者Nagaraj S Kharvi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 18:05:18