ai-engine / entrypoint.sh
Severian's picture
Update entrypoint.sh
fbcb88a verified
raw
history blame
1.86 kB
# 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"]