nest js docker找不到模块dist/main

insrf1ej  于 2021-10-10  发布在  Java
关注(0)|答案(1)|浏览(705)

我正在使用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:```
xggvc2p6

xggvc2p61#

好啊我找到了解决办法。在docker-compose.yaml上,应将.:/usr/src/app从服务“prod”的卷中删除。因为“dist”文件夹在本地计算机中不存在,如果装载了当前本地目录,则显示未找到错误。我想我应该更深入地研究音量。

相关问题