【问题标题】:Cannot access web server using docker无法使用 docker 访问 Web 服务器
【发布时间】:2018-12-10 21:51:28
【问题描述】:

我使用以下命令来运行容器:

docker run -p 3333:3333 -d maill/node-web-app

这是 docker ps 的结果:

CONTAINER ID        IMAGE                COMMAND             CREATED             STATUS              PORTS                    NAMES
f26270107bfa        maill/node-web-app   "npm run dev"       49 seconds ago      Up 46 seconds       0.0.0.0:3000->3000/tcp   musing_fermi

但是,当我尝试使用 localhost:3333 访问主机上的网络服务器时,它不起作用。

我使用的是 Windows 10 专业版。

docker logs musing_fermi 显示:

DONE Compiled successfully in 3541ms16:04:50 | OPEN localhost:3000

Docker 文件:

FROM node:8
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm i
COPY . .
EXPOSE 3333
CMD [ "npm", "run", "dev" ]

package.json:

{
  "name": "webapp-pst-horizon",
  "version": "1.0.0",
  "description": "Webapp pour les formations enedis",
  "author": "Léo Coletta",
  "private": true,
  "scripts": {
    "dev": "cross-env HOST=0.0.0.0 PORT=3333 nuxt",
    "build": "nuxt build",
    "start": "nuxt start",
    "generate": "nuxt generate",
    "lint": "eslint --ext .js,.vue --ignore-path .gitignore .",
    "precommit": "npm run lint"
  },
  "dependencies": {
    "@nuxtjs/axios": "^5.3.1",
    "@nuxtjs/proxy": "^1.2.4",
    "axios": "^0.18.0",
    "babel-polyfill": "^6.26.0",
    "cookie": "^0.3.1",
    "js-cookie": "^2.2.0",
    "nuxt": "^1.4.1",
    "vuetify": "^1.0.19",
    "webpack": "^3.1.0"
  },
  "devDependencies": {
    "babel-eslint": "^8.2.3",
    "cross-env": "^5.2.0",
    "eslint": "^4.9.0",
    "eslint-config-airbnb-base": "^12.1.0",
    "eslint-loader": "^2.0.0",
    "eslint-plugin-import": "^2.7.0",
    "eslint-plugin-vue": "^4.5.0",
    "stylus": "^0.54.5",
    "stylus-loader": "^3.0.2"
  }
}

【问题讨论】:

  • 您尝试使用什么协议来访问它?
  • doesn't work 是什么意思?
  • docker logs musing_fermi 说什么?
  • 我在主机的 chome 中收到“此页面无法正常工作”。我正在尝试使用 localhost:3000 @johnharris85 通过 HTTP 协议访问它
  • ` DONE 3541ms16:04:50 编译成功 |打开localhost:3000`@zero298

标签: docker


【解决方案1】:

要配合johnharris85's answer,请将以下内容添加到您的package.json

来自nuxt documentation on "How to edit HOST and PORT?"

您可以通过 3 种不同的方式配置 PORT:

  1. ...
  2. ...
  3. 通过 package.json 中的 nuxt 配置:

在你的 package.json 中:

"config": {
 "nuxt": {
   "host": "0.0.0.0",
   "port": "3333"
 }
},
"scripts": {
 "dev": "nuxt"
}

【讨论】:

  • 是的,我刚刚看到了,但是当我将 0.0.0.0 添加到主机时(我使用方法 2 和 cross-env),docker logs 说了同样的话:` OPEN localhost:3333 `跨度>
【解决方案2】:

根据您目前所遇到的问题,并且您的容器日志中有OPEN localhost:3000,我猜您的应用程序正在侦听localhost。这是 != localhost 在容器外。您需要将应用程序配置为侦听容器内的0.0.0.0

【讨论】:

  • 当我将 IP 更改为 0.0.0.0 时,Web 服务器仍然指示它在 localhost 上运行(我更新了我的 package.json 以跟随 zero298 anwser。
  • 好的,现在它工作了,我不知道我做了什么让它工作,但谢谢!
猜你喜欢
  • 1970-01-01
  • 2017-03-29
  • 2021-04-10
  • 1970-01-01
  • 1970-01-01
  • 2016-07-18
  • 1970-01-01
  • 2018-04-01
相关资源
最近更新 更多