Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript错误:侦听EADDRINUSE:地址已在使用中:::3000如何避免和修复它_Javascript_Node.js_Docker_Docker Compose - Fatal编程技术网

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日志