我有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-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
的{{1}}方法,但是返回了一些错误。
api-server
因此,我试图知道在{
"statusCode": 500,
"message": "Internal server error"
}
中输入api-server
的原因
docker
然后我内部启动docker exec -it api-server sh
api-server
然后尝试从npm run start
到POST
但是控制台中显示以下错误。
api-server
这是什么原因?
`docker-compose up -d'时已经使用了端口3000?
如何避免此错误?
如果有人有意见,请告诉我
谢谢
答案 0 :(得分:0)
已经有一个正在运行的Node应用程序实例(作为主容器进程),因此,当您在调试Shell中npm run start
进行第二个操作时,将收到“地址已被使用”错误。如果您尝试在两个单独的终端窗口中两次启动服务器,则在没有Docker的情况下也会遇到相同的错误。
如果要尝试主动调试程序,建议使用主机Node安装,这通常会更方便。或者,如果您确实需要服务器的两个副本,请在两个单独的容器中运行它们;您可以使用docker compose run api-server ...
来获得一个新容器,该容器的设置与现有容器的设置基本相同(特别是没有发布的端口),但是命令不同。