gpt4 book ai didi

node.js - Dockerized Node js 应用程序无法启动

转载 作者:搜寻专家 更新时间:2023-10-31 23:46:29 26 4
gpt4 key购买 nike

在对我的演示 Express js 应用进行 docker 化并启动容器后,由于 “连接超时”

,我无法访问该服务

dockerizing 之前 for 项目的 URL(在浏览器上生成“Hello world!”):

http://localhost:3000/cars/example/fetchResult

启动 docker 容器后项目的 URL(给出“172.17.0.2 响应时间过长。”)

http://172.17.0.2:3000/cars/example/fetchResult

Dockerfile

FROM node:argon

# Create app directory
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

# Install app dependencies
COPY package.json /usr/src/app/
RUN npm install

# Bundle app source
COPY . /usr/src/app

EXPOSE 3000
CMD [ "node", "server.js" ]

我构建了我的 docker 镜像

docker build -t prasannarb/example-node-service

我将我的 docker 镜像作为一个容器启动

docker run -t prasannarb/example-node-service

然后当我 docker ps 时,它给了我

CONTAINER ID        IMAGE                             COMMAND             CREATED              STATUS              PORTS               NAMES
7cf955f5d799 prasannarb/example-node-service "node server.js" About a minute ago Up About a minute 3000/tcp thirsty_perlman

docker inspect 7cf955f5d799 给我 "IPAddress": "172.17.0.2"

由于我没有明确提供一个端口来启动我的容器,我假设它会使用与我的 docker 容器 (3000) 公开的端口相同的端口,这也是我的服务将监听的端口。

我在这里做错了什么?

最佳答案

EXPOSE 指令通知 Docker 容器在运行时监听指定的网络端口。 EXPOSE 不会使容器的端口可供主机访问。

为此,您必须使用 -p 标志

您的 docker run 命令应该如下所示:

$docker run -p3000:3000 -t prasannarb/example-node-service

此外,docker inspect 命令为您提供容器 IP 地址,而不是主机 IP 地址。

关于node.js - Dockerized Node js 应用程序无法启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39665220/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com