diff --git a/Dockerfile b/Dockerfile index a880fca..ee770ea 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,23 +1,44 @@ +FROM ghcr.io/astral-sh/uv:debian-slim AS builder +WORKDIR /app + +RUN apt-get update && \ + apt-get install -y --no-install-recommends ca-certificates gcc python3-dev && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* + +COPY pyproject.toml uv.lock ./ + +RUN uv sync --locked + FROM ghcr.io/astral-sh/uv:debian-slim ARG VERSION LABEL version=${VERSION} LABEL description="Docker image for the backend of MediaManager" -ENV IMAGE_DIRECTORY=/data/images -ENV TV_SHOW_DIRECTORY=/data/tv -ENV MOVIE_DIRECTORY=/data/movies -ENV TORRENT_DIRECTORY=/data/torrents -ENV OPENID_ENABLED=FALSE +ENV IMAGE_DIRECTORY=/data/images \ + TV_SHOW_DIRECTORY=/data/tv \ + MOVIE_DIRECTORY=/data/movies \ + TORRENT_DIRECTORY=/data/torrents \ + OPENID_ENABLED=FALSE \ + PUBLIC_VERSION=${VERSION} -RUN apt update && apt install -y ca-certificates gcc python3-dev +RUN apt-get update && \ + apt-get install -y --no-install-recommends ca-certificates && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* WORKDIR /app + +COPY --from=builder /usr/local/lib/python3.*/site-packages /usr/local/lib/python3.*/site-packages/ + COPY --chmod=755 mediamanager-backend-startup.sh . COPY media_manager ./media_manager COPY alembic ./alembic COPY alembic.ini . -COPY pyproject.toml . -COPY uv.lock . -RUN uv sync --locked + +RUN useradd -m appuser && \ + chown -R appuser:appuser /app /data + +USER appuser EXPOSE 8000 CMD ["/app/mediamanager-backend-startup.sh"] \ No newline at end of file diff --git a/media_manager/main.py b/media_manager/main.py index 20b42c0..a22d6f4 100644 --- a/media_manager/main.py +++ b/media_manager/main.py @@ -288,5 +288,12 @@ except Exception as e: log.error(f"Error creating test directory: {e}") raise +@app.get("/", response_model={"message": str, "version": str}) +async def hello_world(): + """ + A simple endpoint to check if the API is running. + """ + return {"message": "Hello World!", "version": os.getenv("PUBLIC_VERSION")} + if __name__ == "__main__": uvicorn.run(app, host="127.0.0.1", port=5049, log_config=LOGGING_CONFIG)