簡體   English   中英

Docker 應用無法從主機訪問

[英]Docker app not able to access from host machine

我創建了一個 docker 文件,並使用該文件創建了一個 docker 容器。 但是無法從主機訪問 docker webapp。 我正在使用 WSL2 運行 docker。我的 docker 容器在我的 ubuntu 發行版中。 當我啟動容器時,它說應用程序正在運行。 但是當我試圖從我的 windows 機器(主機)的 chrome 訪問網絡服務器時,它說無法連接。 我的端口映射看起來都很好。

這是我的 docker-compose.yml 文件

version: '2'
services:
  db:
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: dp
      MYSQL_USER: app
      MYSQL_PASSWORD: appuser
      MYSQL_ALLOW_EMPTY_PASSWORD: 'no'
    ports:
      - "3307:3306"
    volumes:
      - "./db_dump:/docker-entrypoint-initdb.d/:ro"
    container_name: mysql_db
  app:
    build:
      context:
        ./
    volumes:
      - "./dp:/app"
    ports:
      - "3000:3000"
    depends_on: 
      - db
    links: 
      - db
    environment: 
      MYSQL_HOST: db
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: dp
      MYSQL_USER: app
      MYSQL_PASSWORD: appuser
    container_name: dp_app

這是我的 Dockerfile

FROM node:14.15.5-alpine3.13
RUN mkdir -p /app
WORKDIR /app
#RUN adduser -S app
COPY ./dp/ .
RUN npm install
RUN npm install sharp --ignore-scripts=false
#RUN chown -R app /app
#USER app
EXPOSE 3000
CMD [ "npm", "run", "deploy" ]

我的根目錄中有一個名為 dp 的文件夾,它是一個 next.js 應用程序。 我還有一個名為 db_dump 的文件夾,其中包含用於數據庫設置的初始數據庫腳本。

這是 dp 文件夾內 package.json 文件中的腳本

"scripts": {
    "dev": "next dev",
    "build": "next build",
    "start": "next start",
    "lint": "next lint",
    "deploy": "next build && next start"
  }

當我運行docker-compose up ,圖像被構建,下一個應用程序被構建並以消息開始

ready - started server on 0.0.0.0:3000, url: http://localhost:3000因為我將容器的 3000 端口綁定到主機的 3000 端口,所以我應該能夠從 localhost:3000 訪問網絡服務器,對嗎? 但我無法訪問它。 我什至嘗試通過docker inspect獲取 docker 容器 ip,但這也不起作用。 我嘗試使用 3307 端口連接 mysql 服務器,但同樣無法正常工作。 似乎沒有錯誤。 但是無法連接。

我從另一個 wsl 實例嘗試curl -I http://localhost:3000 ,它顯示 200 響應。 但是當我從 windows 命令提示符嘗試相同的操作時,它不起作用。 無法理解是什么問題。

如果您在 Mac 或 Windows 上使用 Docker 機器,請使用 docker -machine ip MACHINE_VM獲取 Docker 主機的 IP 地址。 然后,在瀏覽器中打開http://MACHINE_VM_IP:5000

試試這個它應該工作。

暫無
暫無

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

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