savagedb_bot/Dockerfile

68 lines
2.6 KiB
Docker
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Используем официальный Python образ
FROM python:3.12-slim
# Устанавливаем системные зависимости
RUN apt-get update && apt-get install -y \
gcc \
libaio1 \
libaio-dev \
unzip \
wget \
&& rm -rf /var/lib/apt/lists/*
# Устанавливаем Oracle Instant Client
RUN mkdir -p /opt/oracle && \
cd /opt/oracle && \
wget https://download.oracle.com/otn_software/linux/instantclient/1921000/instantclient-basic-linux.x64-19.21.0.0.0dbru.zip && \
unzip instantclient-basic-linux.x64-19.21.0.0.0dbru.zip && \
rm instantclient-basic-linux.x64-19.21.0.0.0dbru.zip && \
echo /opt/oracle/instantclient_19_21 > /etc/ld.so.conf.d/oracle-instantclient.conf && \
ldconfig
# Устанавливаем переменные окружения для Oracle
ENV ORACLE_HOME=/opt/oracle/instantclient_19_21
ENV LD_LIBRARY_PATH=/opt/oracle/instantclient_19_21${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
ENV PATH=/opt/oracle/instantclient_19_21:$PATH
# Создаем пользователя для безопасности с UID 1027 и добавляем в группу users
RUN useradd --create-home --shell /bin/bash --uid 1027 --gid 100 salvagebot
# Создаем рабочую директорию и устанавливаем права
RUN mkdir -p /home/salvagebot/app && \
chown -R salvagebot:users /home/salvagebot/app
USER salvagebot
WORKDIR /home/salvagebot/app
# Копируем файл зависимостей
COPY --chown=salvagebot:users requirements.txt .
# Устанавливаем Python зависимости
RUN pip install --user --no-cache-dir -r requirements.txt
# Копируем entrypoint скрипт
COPY --chown=salvagebot:users docker-entrypoint.sh /usr/local/bin/
USER root
RUN chmod +x /usr/local/bin/docker-entrypoint.sh
USER salvagebot
# Копируем код приложения
COPY --chown=salvagebot:users . .
# Создаем необходимые директории с правильными правами
RUN mkdir -p logs images data && \
chmod 755 logs images data
# Устанавливаем переменные окружения Python
ENV PYTHONPATH=/home/salvagebot/app
ENV PYTHONUNBUFFERED=1
# Проверяем здоровье контейнера
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
CMD python -c "import sys; sys.exit(0)"
# Используем entrypoint для инициализации
ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"]
# Команда запуска
CMD ["python", "main.py"]