【发布时间】:2018-03-11 05:16:23
【问题描述】:
我正在构建一个我在 Docker 中实现的聊天应用程序。我有一个带有 socket.io 的 NodeJS 容器和一个带有 apache 服务器和网站的容器。
问题是我需要将网站(使用 javascript)连接到 NodeJS 服务器。我查看了 Docker-compose docks 并阅读了有关网络的信息。文档说地址应该是容器的名称。但是当我尝试在浏览器控制台中收到以下错误时:
GET http://nodejs:3000/socket.io/socket.io.js net::ERR_NAME_NOT_RESOLVED
整个项目在容器之外工作。我唯一想不通的是 NodeJs 容器和 Apache 容器之间的连接。
引发错误的代码:
<script type="text/javascript" src="//nodejs:3000/socket.io/socket.io.js"></script>
我的 docker 撰写文件:
version: '3.5'
services:
apache:
build:
context: ./
dockerfile: ./Dockerfile
networks:
default:
ports:
- 8080:80
volumes:
- ./:/var/www/html
container_name: apache
nodejs:
image: node:latest
working_dir: /home/node/app
networks:
default:
ports:
- '3001:3000'
volumes:
- './node_server/:/home/node/app'
command: [npm, start]
depends_on:
- mongodb
container_name: nodejs
networks:
default:
driver: bridge
谁能解释我如何成功地将 apache 容器连接到 NodeJS 容器,以便它可以为 socket.io.js 文件提供服务?
如果需要,我可以提供更多源代码。
【问题讨论】:
标签: node.js docker socket.io docker-compose