# Use official Python image FROM python:3.11-slim # Set working directory WORKDIR /app # Docker process manager ENV TINI_VERSION v0.19.0 ADD https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini /tini RUN chmod +x /tini ENTRYPOINT ["/tini", "--"] # Install dependencies RUN apt-get update && apt-get install -y \ gcc \ python3-dev \ && rm -rf /var/lib/apt/lists/* # Copy requirements first to leverage Docker cache COPY requirements.txt . # Install Python dependencies RUN pip install --no-cache-dir -r requirements.txt # Create a non-root user RUN groupadd -r bot && useradd -r -g bot bot # Copy the rest of the application COPY --chown=bot:bot . . # Create directories for persistent storage and modify permissions RUN chown -R bot:bot /app && \ chmod -R 777 /app RUN mkdir -p logs && \ chown -R bot:bot logs && \ chmod -R 777 logs && \ mkdir -p embed && \ chown -R bot:bot embed && \ chmod -R 777 embed # Switch to non root user USER bot # Set environment variables for configuration ENV PYTHONUNBUFFERED=1 ENV CONFIG_PATH=/app/config.ini # Command to run the bot (using exec form and signal handling) CMD ["sh", "-c", "python generate_config.py && exec python pterodisbot.py"]