File size: 1,856 Bytes
fbcb88a b9bc222 fbcb88a b9bc222 fbcb88a b9bc222 fbcb88a b9bc222 fbcb88a b9bc222 fbcb88a b9bc222 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
# base image
FROM python:3.12-slim-bookworm AS base
# Create non-root user early (HF requirement)
RUN useradd -m -u 1000 user
WORKDIR /app/api
# Install Poetry
ENV POETRY_VERSION=1.8.4
ENV POETRY_HOME=/opt/poetry
ENV POETRY_CACHE_DIR=/tmp/poetry_cache
ENV POETRY_NO_INTERACTION=1
ENV POETRY_VIRTUALENVS_IN_PROJECT=true
ENV POETRY_VIRTUALENVS_CREATE=true
ENV POETRY_REQUESTS_TIMEOUT=15
# Install system dependencies
RUN apt-get update && \
apt-get install -y --no-install-recommends \
gcc g++ libc-dev libffi-dev libgmp-dev libmpfr-dev libmpc-dev \
postgresql postgresql-contrib postgresql-server-dev-all \
curl git nodejs npm && \
rm -rf /var/lib/apt/lists/* && \
pip install --no-cache-dir "poetry==${POETRY_VERSION}"
# Set up directories and permissions
RUN mkdir -p /var/run/postgresql /var/lib/postgresql/data /data/storage && \
chown -R postgres:postgres /var/run/postgresql /var/lib/postgresql/data && \
chmod 2777 /var/run/postgresql && \
chmod 700 /var/lib/postgresql/data
# Copy Poetry files
COPY --chown=user pyproject.toml poetry.lock ./
# Install dependencies
RUN poetry install --no-root
# Copy application code
COPY --chown=user . .
# Set environment variables
ENV FLASK_APP=/app/api/app.py
ENV PYTHONPATH=/app/api
ENV HOME=/home/user
ENV PATH=/home/user/.local/bin:$PATH
# Create and set up entrypoint script
COPY docker/entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh && \
chown user:user /entrypoint.sh && \
chown -R user:user /app
# Switch to user
USER user
# Set required environment variables
ENV EDITION=SELF_HOSTED \
DEPLOY_ENV=PRODUCTION \
MODE=api \
DB_USERNAME=postgres \
DB_PASSWORD=difyai123456 \
DB_HOST=localhost \
DB_PORT=5432 \
DB_DATABASE=dify \
MIGRATION_ENABLED=true
EXPOSE 7860
ENTRYPOINT ["/bin/bash", "/entrypoint.sh"]
|