【发布时间】:2023-07-26 09:06:01
【问题描述】:
我跑docker-compose -f docker-compose-base.yml -f docker-compose-dev.yml up
哪些输出:
...
api |
api | > api@0.0.0 start:development /usr/src/api
api | > npm run start:dev
api |
api |
api | > api@0.0.0 start:dev /usr/src/api
api | > nodemon -L
api |
api exited with code 0
当我进入容器并使用docker-compose -f docker-compose-base.yml -f docker-compose-dev.yml run --rm api /bin/bash 运行/bin/bash 时,nodemon 运行良好:
# npm run start:dev
> api@0.0.0 start:dev /usr/src/api
> nodemon -L
[nodemon] 1.18.10
[nodemon] to restart at any time, enter `rs`
[nodemon] watching: /usr/src/api/src/**/*
[nodemon] starting `ts-node -r tsconfig-paths/register src/main.ts`
Docker 编写文件:
$ cat docker-compose-base.yml docker-compose-dev.yml
version: "3"
services:
api:
build: .
restart: on-failure
volumes:
- ./:/usr/src/api
- /usr/src/api/node_modules
env_file:
- .env
container_name: api
version: "3"
networks:
# Use lb_lbnet network created by the load balancer repo (lb)
# We do this because we need the load balance to resolve container names defined here to forward traffic
default:
external:
name: lb_lbnet
services:
db:
image: postgres:11
container_name: db
restart: always
env_file:
- ./db.env # uses POSTGRES_DB and POSTGRES_PASSWORD to create a fresh db with a password when first run
volumes:
- ./postgres-data:/var/lib/postgresql/data
# only used to upload DB dump:
# - ./backup:/tmp/backup
api:
tty: true
depends_on:
- db
ports:
- 3000:3000
添加tty: true 没有帮助。
更新:这是用于 api 的 Dockerfile:
FROM node:11
WORKDIR /usr/src/api
COPY package*.json ./
RUN npm install
COPY . .
# not using an execution list here so we get shell variable substitution
CMD npm run start:$NODE_ENV
【问题讨论】:
-
docker-compose log 是怎么说的?
-
此外,您的 docker compose 没有图像或构建您的 api 服务。我们可以看到它的 dockerfile 吗?您可能没有 bash 作为您的 CMD 或其他东西
-
不需要 docker-compose 日志,因为我在没有
-d的情况下运行up。刚刚发布了 Dockerfile。 -
完全莫名其妙。那些小鬼案件之一。我跑了
down和up并且无法再重现这个问题。 -
我还是给了你一个答案,你可能在你的 start:dev 脚本中改变了一些东西,这就是它现在对你有用的原因。
标签: docker docker-compose nodemon