Javascript错误:侦听EADDRINUSE:地址已在使用中:::3000如何避免和修复它
我有如下类似的Javascript错误:侦听EADDRINUSE:地址已在使用中:::3000如何避免和修复它,javascript,node.js,docker,docker-compose,Javascript,Node.js,Docker,Docker Compose,我有如下类似的docker compose.yml version: '3' services: api-server: build: ./api links: - 'db' ports: - '3000:3000' volumes: - ./api:/src - ./src/node_modules tty: true container_name: api-server db:
docker compose.yml
version: '3'
services:
api-server:
build: ./api
links:
- 'db'
ports:
- '3000:3000'
volumes:
- ./api:/src
- ./src/node_modules
tty: true
container_name: api-server
db:
build:
context: .
dockerfile: ./db/Dockerfile
restart: always
hostname: db
environment:
MYSQL_ROOT_PASSWORD: test
MYSQL_USER: test
MYSQL_PASSWORD: test
MYSQL_DATABASE: test
volumes:
- './db:/config'
ports:
- 3306:3306
container_name: db
然后我试着
docker编写构建
docker compose up-d
$docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
567e1e7463d api-server "docker-entrypoint.s…" 21 hours ago Up 23 minutes 0.0.0.0:3000->3000/tcp api-server
e85e746d699 db "docker-entrypoint.s…" 3 days ago Up 21 hours 0.0.0.0:3306->3306/tcp, 33060/tcp db
然后我想测试Post
方法到api服务器
,但返回了一些错误
{
"statusCode": 500,
"message": "Internal server error"
}
因此,我试图知道在docker
docker exec-it api服务器sh
我在内部启动api服务器
npm运行启动
然后尝试POST
到api服务器
但控制台中显示以下错误
错误:侦听EADDRINUSE:地址已在使用中:::3000
这是什么原因
“docker compose up-d”时已使用端口3000
如何避免这个错误
如果有人有意见,请告诉我
感谢已经有一个节点应用程序实例正在运行(作为主容器进程),因此当您在调试shell中运行第二个实例时,您将收到“地址已在使用”错误。如果您尝试在两个单独的终端窗口中启动服务器两次,则在没有Docker的情况下会出现相同的错误
如果您试图主动调试程序,我建议使用主机节点安装,这通常会更方便。或者,如果您确实需要服务器的两个副本,请在两个单独的容器中运行它们;您可以使用docker compose run api server…
获取一个新容器,其安装与现有容器基本相同(特别是没有发布端口),但命令不同。而不是在compose启动时从docker内部启动服务器,关闭compose然后打开compose并重试,因为您的主要问题是500服务器错误,所以请检查api服务器的docker日志