mirror of
https://github.com/p-stream/backend.git
synced 2026-01-11 20:10:33 +00:00
feat: add docker support
This commit is contained in:
parent
ad1ded7abb
commit
5c4c47688d
3 changed files with 90 additions and 6 deletions
27
.env.example
27
.env.example
|
|
@ -1,10 +1,25 @@
|
|||
DATABASE_URL="postgresql://user:password@localhost:5432/db?schema=public"
|
||||
# Database credentials
|
||||
PG_USER=p-stream_user
|
||||
# Use a strong password
|
||||
PG_PASSWORD=password
|
||||
PG_DB=p-stream_backend
|
||||
DATABASE_URL="postgresql://${PG_USER}:${PG_PASSWORD}@localhost:5432/${PG_DB}?schema=public"
|
||||
DATABASE_URL_DOCKER="postgresql://${PG_USER}:${PG_PASSWORD}@postgres:5432/${PG_DB}?schema=public"
|
||||
|
||||
# App metadata
|
||||
META_NAME=''
|
||||
META_DESCRIPTION=''
|
||||
|
||||
# Security (generate with `openssl rand -base64 24` or use https://bitwarden.com/password-generator/)
|
||||
CRYPTO_SECRET=''
|
||||
|
||||
# API Keys
|
||||
# From https://www.themoviedb.org/settings/api
|
||||
TMDB_API_KEY=''
|
||||
# From https://trakt.tv/oauth/applications
|
||||
TRAKT_CLIENT_ID=''
|
||||
TRAKT_SECRET_ID=''
|
||||
|
||||
# Optional: Captcha
|
||||
CAPTCHA=false
|
||||
CAPTCHA_CLIENT_KEY=''
|
||||
# USE A RANDOM PASSWORD GENERATOR LIKE THIS: https://bitwarden.com/password-generator/ NEVER SHARE
|
||||
CRYPTO_SECRET=''
|
||||
TMDB_API_KEY=''
|
||||
TRAKT_CLIENT_ID=''
|
||||
TRAKT_SECRET_ID=''
|
||||
17
Dockerfile
Normal file
17
Dockerfile
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
FROM node:23-alpine
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
COPY package*.json ./
|
||||
|
||||
RUN npm ci
|
||||
|
||||
COPY . .
|
||||
|
||||
RUN npx prisma generate
|
||||
|
||||
RUN npm run build
|
||||
|
||||
EXPOSE 3000
|
||||
|
||||
CMD ["sh", "-c", "npx prisma migrate deploy && node .output/server/index.mjs"]
|
||||
52
docker-compose.yml
Normal file
52
docker-compose.yml
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
services:
|
||||
postgres:
|
||||
image: postgres:15-alpine
|
||||
restart: unless-stopped
|
||||
healthcheck:
|
||||
test: [ "CMD-SHELL", "pg_isready -U $$PG_USER -d $$PG_DB" ]
|
||||
interval: 5s
|
||||
retries: 10
|
||||
timeout: 2s
|
||||
environment:
|
||||
- POSTGRES_USER=${PG_USER}
|
||||
- POSTGRES_PASSWORD=${PG_PASSWORD}
|
||||
- POSTGRES_DB=${PG_DB}
|
||||
volumes:
|
||||
- postgres-data:/var/lib/postgresql/data
|
||||
env_file:
|
||||
- .env
|
||||
ports:
|
||||
- '5432:5432'
|
||||
networks:
|
||||
- p-stream-network
|
||||
|
||||
p-stream:
|
||||
build: .
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
DATABASE_URL: ${DATABASE_URL_DOCKER:?database URL required}
|
||||
META_NAME: ${META_NAME}
|
||||
META_DESCRIPTION: ${META_DESCRIPTION}
|
||||
CRYPTO_SECRET: ${CRYPTO_SECRET:?crypto secret required}
|
||||
TMDB_API_KEY: ${TMDB_API_KEY:?TMDB API key password required}
|
||||
TRAKT_CLIENT_ID: ${TRAKT_CLIENT_ID:?TMDB client ID password required}
|
||||
TRAKT_SECRET_ID: ${TRAKT_SECRET_ID:?TMDB secret ID password required}
|
||||
CAPTCHA: ${CAPTCHA}
|
||||
CAPTCHA_CLIENT_KEY: ${CAPTCHA_CLIENT_KEY}
|
||||
NODE_ENV: ${NODE_ENV:-production}
|
||||
env_file:
|
||||
- .env
|
||||
ports:
|
||||
- '3000:3000'
|
||||
depends_on:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
networks:
|
||||
- p-stream-network
|
||||
|
||||
networks:
|
||||
p-stream-network:
|
||||
driver: bridge
|
||||
|
||||
volumes:
|
||||
postgres-data:
|
||||
Loading…
Reference in a new issue