簡體   English   中英

在 Azure App Service 上部署 dockerized 圖像后應用程序運行失敗

[英]Application run failed after deploying dockerized image on Azure App Service

我正在嘗試在 MS Azure 應用服務(Web 應用程序作為容器/Web 應用程序)上部署 dockerized 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 App Service/Container Service 上運行圖像后問題開始了,因為它無法 ping 通端口。 錯誤 - 容器未響應端口 80 上的 HTTP ping,站點啟動失敗。 查看容器日志進行調試

這是應用程序服務日志上可用的 docker run 命令

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

我知道原因是在上面的 docker run 命令中沒有找到 -p 80:80 。 我嘗試了多種方法來解決這個問題,但對我沒有任何幫助。 嘗試添加密鑰:PORT 值:配置應用程序設置中的 80 密鑰:WEBSITES_PORT 值:配置應用程序設置中的 80

默認情況下,應用服務偵聽端口 80/443 並將流量轉發到端口 80 上的容器。 如果您的容器正在偵聽端口 80,則無需設置WEBSITES_PORT應用程序設置。 不需要-p 80:80參數。

只有當它偵聽不同的端口號時,您才可以將WEBSITES_PORT設置為容器的端口號。

現在,為什么 App Service 會報告該錯誤? 可能是您的應用程序在啟動時失敗。 嘗試啟用應用程序日志以查看您是否會獲得更多信息。

已更換

FROM node:14.17.0 as build

FROM node:19-alpine as build

應用程序已在 Azure 中成功部署並獲得成功響應。 使用非高山圖像導致 Azure 應用服務出現問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM