![](/img/trans.png)
[英]docker nodejs container cant connect to mysql container from localhost
[英]Doesn't connect to localhost when running within a docker container using nodejs app & anguar
我正在將 Nodejs 與angular 應用程序一起使用。 我將 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/訪問時,它沒有連接。 請幫忙找出問題..
EXPOSE
只是解決方案的一部分。 您還需要在創建容器時發布端口。 您尚未提供有關如何啟動容器的詳細信息,但在您的情況下,正確的方法是:
docker run -d -P your_image_name
-P
標志發布所有公開的端口。
另一種方式 - 顯式發布特定端口:
docker run -d --publish 4200:4200 your_image_name
在Docker 文檔中閱讀更多信息
nginx:alpine
在端口 80 上暴露。
運行npm start
或ng serve
時,端口 4200 用於開發。
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
當您運行容器時,您可以像這樣將容器中的 map 端口 80 連接到機器上的端口 4200
docker run -d -p 4200:80 my_image_name
然后,您可以通過轉到 http://localhost:4200/ 來加載您的應用程序
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.