Этап 1: Сборка приложения в development среде
FROM node:18-alpine AS development
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
# Этап 2: Запуск приложения в production среде
FROM node:18-alpine AS production
WORKDIR /usr/src/app
COPY --from=development /usr/src/app/dist ./dist
COPY package*.json ./
RUN npm install --only=production
RUN rm package*.json
EXPOSE 3000
CMD ["node", "dist/main.js"]
docker-compose.prod.yml
version: '3.8'
services:
app:
build:
context: .
target: production
ports:
- "3000:3000"
environment:
- NODE_ENV=production
- DB_HOST=db
- DB_PORT=5432
- DB_NAME=mydb
- DB_USER=myuser
- DB_PASSWORD=mypassword
volumes:
- .:/usr/src/app
depends_on:
- db
db:
env_file: '.env'
container_name: nest-postgres
image: postgres:15-alpine
restart: always
environment:
- POSTGRES_USER=${TYPEORM_USERNAME}
- POSTGRES_PASSWORD=${TYPEORM_PASSWORD}
- POSTGRES_DB=${TYPEORM_DATABASE}
volumes:
- /docker-data/db:/var/lib/postgresql/data
ports:
- "5432:5432"
pgadmin:
container_name: pgadmin4_container
image: dpage/pgadmin4
restart: always
environment:
PGADMIN_DEFAULT_EMAIL: admin@admin.com
PGADMIN_DEFAULT_PASSWORD: root
ports:
- "5050:80"
volumes:
postgres-data:
База данных запускается, а nest приложение нет. Просто выходит exit with code 0 в логах ничего. Запускать образ из консоли пробовал тоже голяк..
В чем может быть проблема?
в логах ничего в смысле нет вообще ничего или в логах факт запуска есть... и оно просто по exit 0 выходит?
CMD ["bash","-xce","node dist/main.js"] попробуйте так и логи посморите там строка с node dist/main.js должна появиться в docker-compose logs app
PS C:\Users\Alonecat\www\nest-docker> docker-compose logs app PS C:\Users\Alonecat\www\nest-docker>
docker-compose ps -a
docker-compose run --rm app ?
Container nest-postgres Started 0.4s Welcome to Node.js v18.16.0. Type ".help" for more information. >
node в интерактивном режиме запускается...
Обсуждают сегодня