mirror of
https://github.com/FJurmanovic/sugarr.git
synced 2026-11-11 15:51:09 +00:00
Add Docker packaging for the TypeScript app
This commit is contained in:
38
.env.example
Normal file
38
.env.example
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
# Required
|
||||||
|
JELLYFIN_URL=
|
||||||
|
JELLYFIN_API_KEY=
|
||||||
|
JELLYFIN_USER_ID=
|
||||||
|
TMDB_API_KEY=
|
||||||
|
|
||||||
|
# LLM (disabled by default — works with Ollama, OpenAI, LM Studio, etc.)
|
||||||
|
LLM_ENABLED=false
|
||||||
|
LLM_BASE_URL=http://localhost:11434/v1
|
||||||
|
LLM_API_KEY=
|
||||||
|
LLM_MODEL=llama3
|
||||||
|
|
||||||
|
# Radarr (disabled by default)
|
||||||
|
RADARR_ENABLED=false
|
||||||
|
RADARR_URL=
|
||||||
|
RADARR_API_KEY=
|
||||||
|
RADARR_QUALITY_PROFILE_ID=1
|
||||||
|
RADARR_ROOT_FOLDER=/movies
|
||||||
|
|
||||||
|
# Cron auto-run (disabled by default)
|
||||||
|
CRON_ENABLED=false
|
||||||
|
CRON_SCHEDULE=0 3 * * *
|
||||||
|
|
||||||
|
# HTTP API (enabled by default)
|
||||||
|
API_ENABLED=true
|
||||||
|
API_PORT=8080
|
||||||
|
SECRET_KEY=
|
||||||
|
|
||||||
|
# Tuning
|
||||||
|
RECOMMEND_COUNT=10
|
||||||
|
RECOMMEND_MAX_RETRY=3
|
||||||
|
MIN_RATED_MOVIES=5
|
||||||
|
|
||||||
|
# Langfuse (required by the TypeScript app)
|
||||||
|
LANGFUSE_PUBLIC_KEY=
|
||||||
|
LANGFUSE_SECRET_KEY=
|
||||||
|
LANGFUSE_BASE_URL=
|
||||||
|
LANGFUSE_PROMPT_CACHE_ENABLED=true
|
||||||
17
Dockerfile.node
Normal file
17
Dockerfile.node
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
FROM node:22-alpine AS build
|
||||||
|
WORKDIR /app
|
||||||
|
RUN corepack enable
|
||||||
|
COPY package.json pnpm-lock.yaml ./
|
||||||
|
RUN pnpm install --frozen-lockfile --ignore-scripts
|
||||||
|
COPY tsconfig.json ./
|
||||||
|
COPY src ./src
|
||||||
|
RUN pnpm build
|
||||||
|
|
||||||
|
FROM node:22-alpine AS runtime
|
||||||
|
WORKDIR /app
|
||||||
|
ENV NODE_ENV=production
|
||||||
|
RUN corepack enable
|
||||||
|
COPY package.json pnpm-lock.yaml ./
|
||||||
|
RUN pnpm install --frozen-lockfile --prod
|
||||||
|
COPY --from=build /app/dist ./dist
|
||||||
|
ENTRYPOINT ["node", "dist/app/index.js"]
|
||||||
40
docker-compose.node.yml
Normal file
40
docker-compose.node.yml
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
services:
|
||||||
|
sugarr-node:
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
dockerfile: Dockerfile.node
|
||||||
|
container_name: sugarr-node
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- "${API_PORT}:${API_PORT}"
|
||||||
|
environment:
|
||||||
|
JELLYFIN_URL: ${JELLYFIN_URL}
|
||||||
|
JELLYFIN_API_KEY: ${JELLYFIN_API_KEY}
|
||||||
|
JELLYFIN_USER_ID: ${JELLYFIN_USER_ID}
|
||||||
|
TMDB_API_KEY: ${TMDB_API_KEY}
|
||||||
|
LLM_ENABLED: ${LLM_ENABLED}
|
||||||
|
LLM_BASE_URL: ${LLM_BASE_URL}
|
||||||
|
LLM_MODEL: ${LLM_MODEL}
|
||||||
|
LLM_API_KEY: ${LLM_API_KEY}
|
||||||
|
RADARR_ENABLED: ${RADARR_ENABLED}
|
||||||
|
RADARR_URL: ${RADARR_URL}
|
||||||
|
RADARR_API_KEY: ${RADARR_API_KEY}
|
||||||
|
RADARR_QUALITY_PROFILE_ID: ${RADARR_QUALITY_PROFILE_ID}
|
||||||
|
RADARR_ROOT_FOLDER: ${RADARR_ROOT_FOLDER}
|
||||||
|
CRON_ENABLED: ${CRON_ENABLED}
|
||||||
|
CRON_SCHEDULE: ${CRON_SCHEDULE}
|
||||||
|
API_ENABLED: ${API_ENABLED}
|
||||||
|
API_PORT: ${API_PORT}
|
||||||
|
SECRET_KEY: ${SECRET_KEY}
|
||||||
|
RECOMMEND_COUNT: ${RECOMMEND_COUNT}
|
||||||
|
RECOMMEND_MAX_RETRY: ${RECOMMEND_MAX_RETRY}
|
||||||
|
MIN_RATED_MOVIES: ${MIN_RATED_MOVIES}
|
||||||
|
LANGFUSE_PUBLIC_KEY: ${LANGFUSE_PUBLIC_KEY}
|
||||||
|
LANGFUSE_SECRET_KEY: ${LANGFUSE_SECRET_KEY}
|
||||||
|
LANGFUSE_BASE_URL: ${LANGFUSE_BASE_URL}
|
||||||
|
LANGFUSE_PROMPT_CACHE_ENABLED: ${LANGFUSE_PROMPT_CACHE_ENABLED}
|
||||||
|
networks:
|
||||||
|
- media
|
||||||
|
|
||||||
|
networks:
|
||||||
|
media:
|
||||||
Reference in New Issue
Block a user