【发布时间】:2020-09-12 10:45:56
【问题描述】:
我有docker-compose.ymllike 关注
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-compose build
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-server,但返回了一些错误。
{
"statusCode": 500,
"message": "Internal server error"
}
因此我试图知道这个原因在docker中输入api-server
docker exec -it api-server sh
我在内部启动api-server
npm run start
然后尝试将POST转为api-server
但控制台显示以下错误。
Error: listen EADDRINUSE: address already in use :::3000
这是什么原因?
`docker-compose up -d' 时已经使用了 3000 端口?
如何避免这个错误?
如果有人有意见,请告诉我
谢谢
【问题讨论】:
-
当 compose 启动时,不要从 docker 内部启动服务器,而是让 compose 关闭,然后打开 compose 并尝试,因为您的主要问题是 500 服务器错误,因此请检查 docker 日志以获取 api 服务器
标签: javascript node.js docker docker-compose