我正在使用docker compose构建一个nest.js应用程序。问题是,当我尝试“docker compose up prod”时,它显示“错误:找不到模块'/usr/src/app/dist/main”。因此,我在prod的图像中查看了文件,但我可以找到dist文件夹。另外,我运行dist/main,它可以正常工作。但是,我尝试了docker compose up prod,它显示了上述错误。
此外,当我尝试“docker compose up dev”时,它工作得非常好,为主机创建了一个dist文件夹。dev和prod之间的主要区别在于,dev使用的是npm run start:dev命令,而prod使用的是npm run start:prod命令。
这是我的文件
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:```
1条答案
按热度按时间xggvc2p61#
好啊我找到了解决办法。在docker-compose.yaml上,应将.:/usr/src/app从服务“prod”的卷中删除。因为“dist”文件夹在本地计算机中不存在,如果装载了当前本地目录,则显示未找到错误。我想我应该更深入地研究音量。