← Назад к вопросам

Как проверить вхождение свойства в объект с прототипом?

2.0 Middle🔥 181 комментариев
#JavaScript Core

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI3 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Просмотр ошибок при сборке Docker контейнера

При разработке приложений, которые деплоятся через Docker, часто нужно отладить ошибки во время сборки образа. Существует несколько способов просмотра логов и отладки процесса сборки.

Основные команды для просмотра ошибок

1. Стандартный способ - сборка с выводом

# Базовая сборка с просмотром всех логов
docker build -t my-app:latest .

# С тегом и verbose выводом
docker build -f Dockerfile -t myapp:v1.0 .

# Без кеша (принудительная пересборка всех слоев)
docker build --no-cache -t my-app:latest .

# С progress output для более подробной информации
docker build --progress=plain -t my-app:latest .

Просмотр логов сборки

# Docker desktop - смотри в интерфейсе
# CLI - полный вывод с ошибками в консоли

docker build -t app:latest . 2>&1 | tee build.log

# После сборки посмотри файл
cat build.log | grep -i error

Отладка с использованием промежуточного контейнера

# Если сборка упала на определенном шаге:
# 1. Определи номер последнего успешного слоя
docker build -t app:latest . 2>&1

# 2. Запусти контейнер с этого слоя для отладки
docker run -it sha256:hash_from_error bash

# 3. Внутри контейнера проверь что-то
npm --version
node --version
ls -la

Пример Dockerfile с отладкой

FROM node:20-alpine

WORKDIR /app

# Слой 1 - копирование зависимостей
COPY package*.json ./
RUN npm ci --only=production

# Слой 2 - копирование исходного кода
COPY src ./src
COPY public ./public

# Слой 3 - сборка
RUN npm run build

# Если что-то упадет, Docker покажет номер слоя
# Ты сможешь запустить промежуточный контейнер и отладить

EXPOSE 3000
CMD ["npm", "start"]

Инструменты для отладки

Использование BuildKit (более информативные ошибки)

# Включи BuildKit для лучших отчетов об ошибках
DOCKER_BUILDKIT=1 docker build -t app:latest .

# Или с progress output
docker build --progress=plain -t app:latest .

Логирование внутри Dockerfile

FROM node:20-alpine

WORKDIR /app
COPY package*.json ./

# Выведи версии для отладки
RUN echo "Node version:" && node --version
RUN echo "NPM version:" && npm --version

# Инсталляция с подробным выводом
RUN npm ci --verbose 2>&1 | tee npm-install.log

# Проверка установленных пакетов
RUN npm ls 2>&1 | head -20

COPY src ./src
RUN npm run build || (echo "Build failed!" && exit 1)

Docker Compose для локальной разработки

version: "3.9"
services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "3000:3000"
    volumes:
      - ./src:/app/src  # Hot reload
    environment:
      - NODE_ENV=development

Сборка с compose:

# Сборка с выводом
docker-compose build --no-cache

# Запуск с логами
docker-compose up --build

# Посмотри логи отдельного сервиса
docker-compose logs app

Частые ошибки и решения

1. Ошибка npm install

# Проверь версию Node
RUN node --version

# Используй npm ci вместо npm install для production
RUN npm ci --only=production

# Если проблема с правами - используй npm cache
RUN npm cache clean --force

2. Ошибка сборки (build fails)

# Добавь -v для verbose
RUN npm run build -v

# Или выведи debug информацию
RUN npm run build 2>&1 | tee build.log
RUN cat build.log

3. Недостаток памяти при сборке

# Увеличь память для Node
ENV NODE_OPTIONS=--max_old_space_size=4096
RUN npm run build

Проверка уже собранного образа

# Посмотри историю слоев
docker history my-app:latest

# Инспектируй образ
docker inspect my-app:latest

# Запусти bash внутри образа для отладки
docker run -it my-app:latest bash

Лучшие практики для минимизации ошибок

  1. Используй .dockerignore для исключения лишних файлов
node_modules
npm-debug.log
.git
.env
dist
.next
  1. Многоступенчатая сборка для меньшего финального образа
FROM node:20 as builder
WORKDIR /app
COPY . .
RUN npm ci && npm run build

FROM node:20-alpine
WORKDIR /app
COPY --from=builder /app/dist ./dist
CMD ["node", "dist/index.js"]
  1. Пинируй версии для reproducible builds
FROM node:20.10.0-alpine

Правильная отладка ошибок Docker — это навык, который экономит часы времени при разработке и деплое приложений.

Как проверить вхождение свойства в объект с прототипом? | PrepBro