我正在將 Nodejs 與angular app 一起使用。我將 Angular 部署到我的 docker 桌面。它正在運行,但是當我想使用 PC 瀏覽器中的 localhost 從我的 PC 訪問時,它沒有連接..
這是正在運行的 docker 映像

這是 Dockerfile 代碼
FROM node:16.13.1 as build
WORKDIR /app
COPY package.json /app
COPY . .
RUN npm install
RUN npm run build --prod
RUN ls -la dist
FROM nginx:alpine
COPY --from=build /app/dist /usr/share/nginx/html
EXPOSE 4200
當我想從我的電腦使用http://localhost:4200/訪問時,它沒有連接。請幫忙找出問題..
uj5u.com熱心網友回復:
nginx:alpine在埠 80 上公開。
在運行時使用埠 4200npm start或ng serve.
uj5u.com熱心網友回復:
這EXPOSE只是解決方案的一部分。您還需要在創建容器時發布埠。您尚未提供有關如何啟動容器的詳細資訊,但在您的情況下,正確的方法是:
docker run -d -P your_image_name
該-P標志發布所有暴露的埠。
另一種方式 - 顯式發布特定埠:
docker run -d --publish 4200:4200 your_image_name
在Docker 檔案中閱讀更多內容
uj5u.com熱心網友回復:
EXPOSE 4200 什么都不做,在這種情況下具有誤導性。您使用 EXPOSE 記錄影像偵聽的埠。正如 Antoine 所說,nginx 監聽埠 80,所以如果你想要一個 EXPOSE 陳述句,它應該是EXPOSE 80.
洗掉 EXPOSE 陳述句,因為它具有誤導性
FROM node:16.13.1 as build
WORKDIR /app
COPY package.json /app
COPY . .
RUN npm install
RUN npm run build --prod
RUN ls -la dist
FROM nginx:alpine
COPY --from=build /app/dist /usr/share/nginx/html
當您運行容器時,您可以像這樣將容器中的埠 80 映射到機器上的埠 4200
docker run -d -p 4200:80 my_image_name
然后,您可以通過訪問 http://localhost:4200/ 來加載您的應用程式
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/409356.html
標籤:
