#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:
блок.