Node.js docker 容器中的应用,无法通过互联网"Connection refused"访问



我很长一段时间都在努力让node.js应用程序可以通过互联网访问。码头集装箱在9000号码头上运行。主机是Oracle云上的Oracle Linux虚拟机。我已经在那里启用了端口9000。

在容器中,我使用以下命令运行node.js应用程序:

sh-4.2# node index.js
Starting application
Initializing database module
libDir = /usr/lib/oracle/19.3/client64/lib
Initializing web server module
Web server listening on Host:0.0.0.0, Port:9000

从Oracle Linux主机中检查docker容器进程:码头工人ps

CONTAINER ID        IMAGE                          COMMAND             CREATED              STATUS              PORTS               NAMES
8504964aa23c        227d64c853db/domaevid-server   "sh"                About a minute ago   Up About a minute   9000/tcp            mystifying_babbage

在主机上测试连接会返回错误:

[opc@instance-20210318-1902 ~]$ curl http://public.ip:9000/api/home
curl: (7) Failed connect to public.ip:9000; Connection refused

Dockerfile的内容:

FROM oraclelinux:7-slim
WORKDIR /usr/src/app
COPY package*.json ./
RUN  yum -y install oracle-release-el7 && 
yum -y install oracle-instantclient19.3-basiclite && 
yum -y install oracle-nodejs-release-el7 && 
yum-config-manager --disable ol7_developer_EPEL && 
yum install vim-enhanced -y &&  
yum -y install nodejs && 
npm install && 
rm -rf /var/cache/yum
RUN echo "export xxx" >> ~/.bashrc && 
echo "export xxx" >> ~/.bashrc && 
echo "export xxx" >> ~/.bashrc && 
echo "export xxx" >> ~/.bashrc && 
echo "export xxx" >> ~/.bashrc
RUN source ~/.bashrc 
COPY /_docker/ORACLE/NETWORK/ADMIN/* /usr/lib/oracle/19.3/client64/lib/network/admin 
COPY . .
EXPOSE 9000
CMD [ "node", "index.js" ]

还应该做些什么才能通过互联网访问node.js应用程序?

谨致问候,Dime

启动容器时,您似乎还没有将容器中的端口9000映射到主机上的端口9000。

docker ps显示器的"端口"部分看起来像这个

PORTS
9000/tcp

但应该像这个

PORTS
0.0.0.0:9000->9000/tcp

通过在docker run命令上添加-p 9000:9000作为参数(在映像名称之前(来映射端口。这会将主机上的端口9000映射到容器中的端口9000,因此它是可访问的。

相关内容

最新更新