Heroku/Dockerfile

49 lines
2.5 KiB
Docker
Raw Blame History

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

# thanks vsecoder
# -------------------------------
# Используем образ python:3.10-slim как базовый для этапа сборки
FROM python:3.10-slim AS builder
# Отключаем кэширование pip, чтобы уменьшить размер образа
ENV PIP_NO_CACHE_DIR=1
# Устанавливаем необходимые пакеты для сборки Python пакетов и git
RUN apt-get update && \
apt-get install -y --fix-missing --no-install-recommends git python3-dev gcc
# Очищаем кэш apt для уменьшения размера образа
RUN rm -rf /var/lib/apt/lists/ /var/cache/apt/archives/ /tmp/*
# Клонируем репозиторий Heroku
RUN git clone https://github.com/coddrago/Heroku /Heroku
# Создаем виртуальное окружение Python
RUN python -m venv /venv
# Устанавливаем зависимости проекта
RUN /venv/bin/pip install --no-warn-script-location --no-cache-dir -r /Heroku/requirements.txt
# -------------------------------
# Используем другой базовый образ для финального контейнера
FROM python:3.10-slim
# Устанавливаем необходимые пакеты для работы приложения
RUN apt-get update && \
apt-get install -y --no-install-recommends --fix-missing \
curl libcairo2 git ffmpeg libmagic1 \
libavcodec-dev libavutil-dev libavformat-dev \
libswscale-dev libavdevice-dev neofetch wkhtmltopdf gcc python3-dev
# Устанавливаем Node.js
RUN curl -sL https://deb.nodesource.com/setup_18.x -o nodesource_setup.sh && \
bash nodesource_setup.sh && \
apt-get install -y nodejs && \
rm nodesource_setup.sh
# Очищаем кэш apt для уменьшения размера образа
RUN rm -rf /var/lib/apt/lists/ /var/cache/apt/archives/ /tmp/*
# Устанавливаем переменные окружения для работы приложения
ENV DOCKER=true \
GIT_PYTHON_REFRESH=quiet \
PIP_NO_CACHE_DIR=1
# Копируем собранное приложение и виртуальное окружение из этапа сборки
COPY --from=builder /Heroku /Heroku
COPY --from=builder /venv /Heroku/venv
# Устанавливаем рабочую директорию
WORKDIR /Heroku
# Открываем порт 8080 для доступа к приложению
EXPOSE 8080
# Определяем команду запуска приложения
CMD ["python3", "-m", "hikka"]