我很长一段时间都在努力让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,因此它是可访问的。