Node.js Docker中带有Nodejs(Hapi.js)和Prisma的ConnectionError

Node.js Docker中带有Nodejs(Hapi.js)和Prisma的ConnectionError,node.js,typescript,docker,port,prisma,Node.js,Typescript,Docker,Port,Prisma,我想把我的Nodejs应用程序放到docker中。通过npm运行构建和启动部署时,我可以向它发送请求。 但在创建docker映像时,我遇到了一些问题: 首先,我的Dockerfile中有一个EXPOSE 8080。然后我运行docker-run-p=3000:8080--env file.env我的docker文件。之后,我将获得服务器正在运行的信息http://localhost:3000. 我知道localhost:3000就在docker文件中。但至少码头工人正在运行 当我使用命令http

我想把我的Nodejs应用程序放到docker中。通过npm运行构建和启动部署时,我可以向它发送请求。
但在创建docker映像时,我遇到了一些问题:
首先,我的Dockerfile中有一个EXPOSE 8080。然后我运行
docker-run-p=3000:8080--env file.env我的docker文件
。之后,我将获得服务器正在运行的信息http://localhost:3000.
我知道localhost:3000就在docker文件中。但至少码头工人正在运行

当我使用命令
http localhost:3000
(或浏览器)执行对URL的GET请求时,我得到
http:error:ConnectionError:('Connection aborted','RemoteDisconnected'('Remote end closed Connection without response'):http://localhost:3000/

有人知道出了什么问题吗???我不知道

所有能指引我走向正确方向的提示

我的Dockerfile:

##这是第一阶段,也称为构建步骤
来自节点:12.17.0-alpine作为生成器
WORKDIR/app
复制包*.json/
复制prisma./prisma/
复制tsconfig.json。
复制src./src/
复制测试。/测试/
运行npm安装
运行npx prisma生成
复制
运行npm运行构建
##这是第二阶段,应用程序将实际运行
从节点:12.17.0-1
复制--from=builder/app/node\u模块。/node\u模块
复制--from=builder/app/package*.json/
复制--from=builder/app/dist./dist
曝光8080

CMD npm start
如果您使用Dockerfile,首先您最好构建您的映像

FROM node:12.17.0-alpine as builder

WORKDIR /app

COPY . .

RUN npm install
RUN npx prisma generate

RUN npm run build

## this is stage two , where the app actually runs

FROM node:12.17.0-alpine

COPY --from=builder /app/node_modules ./node_modules
COPY --from=builder /app/package*.json ./
COPY --from=builder /app/dist ./dist

EXPOSE 8080
CMD ["npm","start"]
Dockerfile
所在的位置:

docker build-t您的图像名称。


docker run-p 3000:8080--env file.env您的图像名

您检查了IP地址吗

当我第一次将我的节点项目部署到Docker时,我也无法访问它,因为我的节点项目正在侦听
localhost
请求。但如果不将网络指定为主机,Docker容器将在子网中具有其他IP地址


我已将侦听IP地址的节点项目更改为
0.0.0.0
,之后我可以连接到在Docker容器中运行的节点项目。

您可以发布您的Docker文件吗?我这样做了:)希望您发现一个错误
,之后我将获得服务器正在运行的信息http://localhost:3000
,您从容器中获取此信息,但绑定3000:8000,8000来自哪里?3000是主机端口,8000应该是容器端口…是的,我就是这样做的我只是复制了你的Dockerfile,但得到了相同的错误