докеру не удалось найти main.js файл для запуска серверной части в nestjs с типом typeorm

#docker #docker-compose #dockerfile #nestjs #typeorm

Вопрос:

докер-compose.yml

 version: '3.7'
services: 
    backend:
        container_name: backend
        build:
            context: backend
            dockerfile: Dockerfile
        ports: 
            -   8000:8000
        volumes:
            -   ./backend:/app
        depends_on: 
            -   pgdb
        
    pgdb:
        container_name: pgdb
        image: postgres
        environment: 
            POSTGRES_PASSWORD: 'admin'
            POSTGRES_USER: 'postgres'
            POSTGRES_DB: 'ambassador'
        ports: 
            -   5432:5432
        volumes:
        - db-data:/var/lib/postgresql

volumes: 
    db-data:
 

Докерфайл

 FROM node:16 
WORKDIR /app
COPY package.json .
COPY yarn.lock .
RUN yarn install
COPY . .
RUN yarn build
EXPOSE 8000
CMD ["yarn", "start:prod"]
 

серверная часть -> src ->> main.ts

 async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  const configService: ConfigService = app.get<ConfigService>(ConfigService);
  const port = configService.get('PORT');    //PORT=8000 in .env
  await app.listen(port);
  Logger.log(`Listening on http://localhost:${port}`);
}
bootstrap();
 

Я продолжаю получать сообщение об ошибке

Ошибка: Не удается найти модуль ‘/app/dist/main’

Пожалуйста, поправьте меня, если я здесь ошибаюсь. В соответствии с инструкциями Dockerfile я добавил новый рабочий каталог в контейнер под названием «приложение», скопировал файл package.json и файл блокировки в приложение и запустил установку, чтобы получить node_modules. Затем скопировал все из внутреннего каталога в каталог приложений в docker. Запуск сборки yarn после этого создаст папку dist, в которой будет main.js файл, до которого мне нужно добраться. И все же я получаю эту ошибку. Я запустил сборку yarn на своей локальной машине и увидел, что в dist есть файлы ormconfig и подкаталог src, который содержит main.js. Следовательно, я изменил значение«start:prod» в файле package.json в «node dist/src/main», но даже это показывает

Ошибка: Не удается найти модуль ‘/app/dist/src/main’

пожалуйста, просветите меня, в чем или где я здесь ошибаюсь?

Комментарии:

1. volumes: Блок перезаписывает все, что находится в /app каталоге контейнера, произвольным содержимым из каталога хоста; yarn build сборка образа теряется, и если вы запустите этот стек в другой системе, вы получите другие результаты. Я бы рекомендовал удалить этот volumes: блок.