【发布时间】:2022-01-16 08:20:14
【问题描述】:
我有一个 server-api 应用程序。
在我的本地主机中,我只需要 2 个命令来启动应用程序:
- npm 安装
- 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