【问题标题】:Unable to connect with docker container无法与 docker 容器连接
【发布时间】:2022-01-16 08:20:14
【问题描述】:

我有一个 server-api 应用程序。

在我的本地主机中,我只需要 2 个命令来启动应用程序:

  1. npm 安装
  2. npm 开始

没有了,它在 3000 端口完美运行。

我正在尝试 dockerize 我的服务器以使用 docker-compose 启动它。

好的,这是我的 dockerfile:

FROM node:14-alpine AS development

ENV NODE_ENV development

WORKDIR /app

COPY package.json .
COPY package-lock.json .

RUN npm install

COPY . .

EXPOSE 3000

CMD ["npm", "start"]

我启动构建命令来构建映像:

docker build --tag server-api . 

完成后,我运行容器:

docker run -p 80:3000 server-api

日志很完美,它说它在端口 3000 中运行,我应该连接到 localhost:3000 以查看我的 server-api 应用程序。

但是,我不知道那是容器的端口,我已经使用命令 -p 80:3000 启动了容器,所以我检查了我的计算机的端口 80...但是没有任何反应。

我的故障排除应该是什么?

我已经尝试获取一些与我的容器相关的信息:

docker exec -it <container_id> sh 

但一切看起来都很完美,而且是一个简单的应用程序。

我做错了什么?

【问题讨论】:

  • 您是否检查过您的 Node 应用侦听特殊 IP 0.0.0.0,并且不只是 localhost?
  • 如果我的第一条评论是问题的症结所在,人们可能希望将问题标记为 this answer 的重复项(它概括了您的用例的所有要求,因此它并不特定于 Java/ Spring-Boot 和 Node…)
  • 嗨!感谢您的 cmets 但不是 Spring Boot,是 json-server:github.com/typicode/json-server 我只有一个 json 作为数据库。这个特殊 IP 在所有节点应用程序中?
  • 仅供参考,您可能需要npm ci 而不是npm install,因为安装将更新 package-lock.json,而不是使用它来安装冻结版本。

标签: javascript bash docker npm docker-compose


【解决方案1】:

正如@ErikMD 所说,所有后端应用程序都需要侦听特殊 IP 0.0.0.0 才能进行 docker 化(React 不会出现此问题)。

我需要阅读这篇文章:https://nodejs.org/en/docs/guides/nodejs-docker-webapp/

为了解决我的问题,我检查了如何将 localhost 更改为 0.0.0.0 作为主机。

默认情况下,我的主机是 localhost。

所以,我在我的 package.json 中更改了这个:

"scripts": {
  "start": "json-server --watch db.json"
},

为此:

"scripts": {
   "start": "json-server --host 0.0.0.0 --port 8080 --watch db.json"
},

现在终于可以完美运行了。

【讨论】:

  • 太棒了。顺便说一句,请随意接受您自己的答案! (当你能够做到这一点时,也许你需要更多的代表才能做到这一点)使用答案左侧的绿色复选标记。
猜你喜欢
  • 2021-06-30
  • 1970-01-01
  • 2017-06-15
  • 2018-02-25
  • 2020-02-29
  • 2015-05-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-10
相关资源
最近更新 更多