A small Flask and React app that picks a random movie from a Plex library.
The project builds into one container. The Docker build compiles the React frontend, copies the static assets into the Python image, and runs the Flask app with Gunicorn.
Runtime configuration:
PLEX_LOCATION: Plex server URLPLEX_AUTH_TOKEN: Plex authentication token (X-Plex-Token)
docker login ghcr.io -u ddeville
make pushThis builds and pushes ghcr.io/ddeville/plexmoviepicker:<appVersion>. Override the tag with VERSION=....
The Helm chart is in charts/plexmoviepicker.
The chart expects an existing Kubernetes Secret for the Plex token:
kubectl create namespace plexmoviepicker
kubectl -n plexmoviepicker create secret generic plexmoviepicker-api \
--from-literal=PLEX_AUTH_TOKEN=replace-meExample values:
plex:
location: https://plex.example.com
authTokenSecret:
name: plexmoviepicker-api
key: PLEX_AUTH_TOKEN
gateway:
enabled: true
name: public-gateway
listenerName: https
hostnames:
- movies.example.comInstall from a checkout:
helm upgrade --install plexmoviepicker ./charts/plexmoviepicker \
--namespace plexmoviepicker \
-f values.yamlArgo CD can also use the chart directly from this repo:
source:
repoURL: https://github.com/ddeville/plexmoviepicker.git
targetRevision: main
path: charts/plexmoviepickerSet gateway.enabled=false if another resource exposes the Service. The chart image defaults to ghcr.io/ddeville/plexmoviepicker:<appVersion>; override image.repository, image.tag, or image.digest as needed.