【发布时间】:2021-10-01 20:34:07
【问题描述】:
我正在使用 Docker-compose 构建一个 Nest.js 应用程序。 问题是当我尝试“docker-compose up prod”时,它显示“错误:找不到模块'/usr/src/app/dist/main。” 因此,我浏览了产品映像中的文件,但我可以找到 dist 文件夹。另外,我运行 dist/main 并且它可以工作。但是,我尝试了 docker-compose up prod,它显示了上述错误。
此外,当我尝试“docker-compose up dev”时。它完美地工作,为主机创建一个 dist 文件夹。 dev 和 prod 的主要区别在于 dev 使用 npm run start:dev 的命令,而 prod 使用 npm run start:prod 的命令。
这是我的 DockerFile
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install rimraf
RUN npm install --only=development
COPY . .
RUN npm run build
FROM node:12.19.0-alpine3.9 as production
ARG NODE_ENV=production
ENV NODE_ENV=${NODE_ENV}
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install --only=production
COPY . .
COPY --from=development /usr/src/app/dist ./dist
CMD ["node", "dist/main"]
这是我的 docker-compose.yaml
services:
proxy:
image: nginx:latest # 최신 버전의 Nginx 사용
container_name: proxy # container 이름은 proxy
ports:
- '80:80' # 80번 포트를 host와 container 맵핑
networks:
- nestjs-network
volumes:
- ./proxy/nginx.conf:/etc/nginx/nginx.conf # nginx 설정 파일 volume 맵핑
restart: 'unless-stopped' # 내부에서 에러로 인해 container가 죽을 경우 restart
depends_on:
- prod
dev:
container_name: nestjs_api_dev
image: nestjs-api-dev:1.0.0
build:
context: .
target: development
dockerfile: ./Dockerfile
command: npm run start:dev #node dist/src/main #n
ports:
- 3001:3000
networks:
- nestjs-network
volumes:
- .:/usr/src/app
- /usr/src/app/node_modules
restart: unless-stopped
prod:
container_name: nestjs_api_prod
image: nestjs-api-prod:1.0.0
build:
context: .
target: production
dockerfile: ./Dockerfile
command: npm run start:prod
# ports:
# - 3000:3000
# - 9229:9229
expose:
- '3000' # 다른 컨테이너에게 3000번 포트 open
networks:
- nestjs-network
volumes:
- .:/usr/src/app
- /usr/src/app/node_modules
restart: unless-stopped
networks:
nestjs-network:```
【问题讨论】:
标签: node.js docker docker-compose nestjs