| |
| |
|
|
| FROM python:3.12-slim |
|
|
| |
| RUN apt-get update && apt-get install -y redis-server gnupg wget curl && \ |
| rm -rf /var/lib/apt/lists/* |
|
|
| |
| RUN curl -fsSL https://www.mongodb.org/static/pgp/server-7.0.asc | gpg -o /usr/share/keyrings/mongodb-server-7.0.gpg --dearmor && \ |
| echo "deb [ signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg trusted=yes ] http://repo.mongodb.org/apt/debian bookworm/mongodb-org/7.0 main" | tee /etc/apt/sources.list.d/mongodb-org-7.0.list && \ |
| apt-get update && \ |
| apt-get install -y mongodb-org && \ |
| rm -rf /var/lib/apt/lists/* |
|
|
| |
| RUN wget -q https://dl.min.io/server/minio/release/linux-amd64/minio -O /usr/local/bin/minio && \ |
| chmod +x /usr/local/bin/minio |
|
|
| |
| RUN useradd -m -u 1000 user |
| USER user |
|
|
| |
| ENV PATH="/home/user/.local/bin:/app/.venv/bin:$PATH" |
| ENV CHROMA_DB_HOST_IP="127.0.0.1" |
| ENV ANONYMIZED_TELEMETRY="false" |
| ENV REDIS_HOST="127.0.0.1" |
| ENV REDIS_PORT="6379" |
| ENV REDIS_DB="0" |
| ENV CACHE_TTL="300" |
| ENV MONGO_URI="mongodb://127.0.0.1:27017" |
| ENV MONGO_DB_NAME="music_memories" |
| ENV MINIO_ENDPOINT="127.0.0.1:9000" |
| ENV MINIO_ACCESS_KEY="minioadmin" |
| ENV MINIO_SECRET_KEY="minioadmin" |
| ENV MINIO_BUCKET="music-memories" |
| ENV MINIO_SECURE="false" |
| WORKDIR /app |
|
|
| |
| RUN pip install --no-cache-dir --upgrade uv |
|
|
| |
| COPY --chown=user pyproject.toml uv.lock README.md /app/ |
|
|
| |
| RUN uv venv /app/.venv \ |
| && uv sync --frozen --no-dev |
|
|
| |
| COPY --chown=user . /app |
|
|
| |
| RUN mkdir -p /app/chroma_db /app/data /app/redis_data /app/mongo_data /app/minio_data && \ |
| chown -R user:user /app/chroma_db /app/data /app/redis_data /app/mongo_data /app/minio_data |
|
|
| |
| RUN uv run python seed_db.py |
|
|
| |
| COPY --chown=user start.sh /app/start.sh |
| RUN chmod +x /app/start.sh |
|
|
| EXPOSE 7860 6379 27017 9000 9001 |
|
|
| |
| CMD ["/app/start.sh"] |
|
|