gpt4 book ai didi

node.js - 访问容器内服务的端口问题

转载 作者:太空宇宙 更新时间:2023-11-03 17:03:29 25 4
gpt4 key购买 nike

我是帮 friend 发帖的。他向我寻求帮助,但我们无法查明发生了什么。

我的情况是:当我的应用程序不在容器内时,它在 Ubuntu 18.04 上运行完美,但客户需要使用容器,所以我创建了一个 Dockerfile 以便它可以由 Docker 容器启动。这是我的 Dockerfile 的内容

FROM node:8.9.4

ENV HOME=/home/backend

RUN apt-get update
RUN apt-get install -y build-essential libssl-dev
RUN apt-get install -y npm

COPY . $HOME/

WORKDIR $HOME/

RUN npm rebuild node-sass
RUN npm install --global babel-cli


USER root

EXPOSE 6543

CMD ["babel-node", "index.js"]

构建镜像后,我执行以下 Docker 运行命令:sudo docker run --name backend-api -p 6543:6543 -d backend/backendapi1.0

查看日志输出,我可以得出应用程序正常运行的结论: log output

我在我的 nginx 中创建了一个规则,从端口 90 重定向到 6543(在使用它曾经工作的容器之前)

server {
listen 90;
listen [::]:90;
access_log /var/log/nginx/reverse-access.log;
error_log /var/log/nginx/reverse-error.log;
location / {
proxy_pass http://localhost:6543;
}
}

P.S.:我尝试将本地主机的 IP 更改为容器的 IP,但效果不佳。有趣的是,当我在 6543 上尝试使用内部 telnet 时,它会接受连接并立即关闭。

telnet test

P.S.:防火墙上的所有端口都是打开的。应用程序在容器外正常工作(使用端口6543并在nginx中重定向)

如果有人可以帮助我们找出发生这种情况的原因,我将不胜感激。我们没有太多创建容器的经验。非常感谢!

编辑:它是一个 AWS VM,但这是我们运行命令 curl 时的返回: curl command return

最佳答案

我们找到了解决方案!!这是一个内部容器路由器问题......

以下 Docker 运行命令解决了问题:

sudo docker run --name my_container_name --network="host" -e MONGODB=my_container_ip -p 6543:6543 my_dockerhub_image_name

非常感谢!!

关于node.js - 访问容器内服务的端口问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59077418/

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