# Dockerfile для веб-интерфейса DevOpsLab # Автор: Сергей Антропов # Сайт: https://devops.org.ru FROM python:3.11-slim # Метаданные LABEL maintainer="Сергей Антропов" LABEL description="Веб-интерфейс для DevOpsLab" LABEL site="https://devops.org.ru" # Установка системных зависимостей RUN apt-get update && apt-get install -y \ gcc \ g++ \ make \ git \ curl \ ca-certificates \ gnupg \ lsb-release \ tzdata \ && rm -rf /var/lib/apt/lists/* # Установка Docker CLI для управления контейнерами через socket RUN curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg \ && echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null \ && apt-get update \ && apt-get install -y docker-ce-cli docker-buildx-plugin \ && rm -rf /var/lib/apt/lists/* # Создание рабочей директории WORKDIR /app # Копирование requirements и установка зависимостей COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt # Копирование приложения # Создаем структуру: /app/app/ для правильных импортов RUN mkdir -p /app/app COPY . /app/app/ # main.py остается в /app/app/ для правильных импортов # Создание директории для логов RUN mkdir -p logs # Переменные окружения ENV PYTHONUNBUFFERED=1 ENV PYTHONDONTWRITEBYTECODE=1 ENV PYTHONPATH=/app ENV TZ=Europe/Moscow RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone # Порт приложения EXPOSE 8000 # Команда запуска # main.py находится в /app/app/, поэтому используем app.main # --reload-dir указывает на всю папку app для отслеживания изменений CMD ["python", "-m", "uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000", "--reload", "--reload-dir", "/app/app"]