Skip to content

Conversation

@kiyro7
Copy link
Collaborator

@kiyro7 kiyro7 commented Nov 26, 2025

No description provided.

@kiyro7 kiyro7 self-assigned this Nov 26, 2025
HadronCollider

This comment was marked as outdated.

@kiyro7

This comment was marked as off-topic.

@HadronCollider

This comment was marked as outdated.

Copy link
Collaborator

@HadronCollider HadronCollider left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Чтобы сейчас не тратить своё время на ревью сгенерированного кода в этом PR, предлагаю вам с помощью известных инструментов получить фидбек по файлам в PR

  • для примера (и в том числе оценки текущего файла) ниже - ревью по Dockerfile
  • ревью по остальным файлам приложите в виде комментариев - вместе изучим

В текущем варианте (в плане чистоты / понятности кода ) PR в проект не попадет

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Этот Dockerfile действительно содержит несколько странных решений и артефактов генерации ИИ. Давайте разберем по пунктам:

Проблемы и странности:

  1. Бессмысленное многостадийное построение:
FROM base AS app
CMD ["bash", "-lc", "sleep infinity"]

Переопределение только CMD без добавления новых слоев - бессмысленно.

  1. Дублирование FROM base AS init:

    • Создает отдельный образ только для выполнения одного скрипта
    • Можно было сделать в одном образе с разными entrypoints
  2. chmod +x в отдельном RUN:

    RUN chmod +x /usr/local/bin/init-volumes.sh
    

    Это действительно антипаттерн. Лучше:

    COPY --chmod=755 docker/init-volumes.sh /usr/local/bin/
    
  3. sleep infinity как CMD:

    • Для разработки может иметь смысл, но лучше использовать docker-compose с command override
  4. Установка torch отдельно от requirements.txt:

    RUN pip install --no-cache-dir torch==2.5.1
    RUN pip install --no-cache-dir -r requirements.txt
    

    Стоило указать torch в requirements.txt

Что можно оставить/исправить:

FROM python:3.10-slim

# Установка системных зависимостей
RUN apt-get update && apt-get install -y --no-install-recommends \
    git wget gcc g++ \
    libprotobuf-dev protobuf-compiler \
    && rm -rf /var/lib/apt/lists/*

WORKDIR /app

# Лучше объединить переменные окружения
ENV PIP_DISABLE_PIP_VERSION_CHECK=1 \
    PIP_DEFAULT_TIMEOUT=120 \
    NLTK_DATA=/nltk_data

# Копируем зависимости
COPY requirements.txt .

# Устанавливаем зависимости одним RUN (кеширование слоев)
RUN pip install --no-cache-dir \
    torch==2.5.1 \
    -r requirements.txt \
    "huggingface_hub[cli]"

# Копируем код
COPY . .

# Для инициализации можно использовать скрипт
COPY --chmod=755 docker/init-volumes.sh /usr/local/bin/

# По умолчанию запускаем приложение, но можем переопределить
CMD ["python", "app.py"]  # или ваша команда по умолчанию

Рекомендации:

  1. Если нужны разные точки входа (app vs init), лучше:

    • Создать скрипты /usr/local/bin/start-app и /usr/local/bin/init
    • Или использовать docker-compose для разных конфигураций
  2. Для разработки с sleep infinity:

    # В docker-compose.yml
    command: bash -c "sleep infinity"
    
  3. Разделение на этапы имело бы смысл, если бы:

    • Был этап builder с компиляцией
    • Итоговый образ был значительно легче
    • Но здесь этого нет

Вывод: Dockerfile явно сгенерирован ИИ без понимания контекста. Лучше переписать с учетом реальных потребностей приложения.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants