A web app to search for movies using the TMDB API, served by Apache HTTPd in a Docker container.
I play a game with my coworker where we need to find a movie name by guessing other movie names. Each try can help us find the movie by telling us if the movie we are looking for has the same actor, is shorter/longer, was released before/after, has the same styles... Looking up online was a long and painful task. I decided this needed a good search engine... The game can be found here : 1jour1film
- Filter by country, release year (exact or range), and duration
- Genre selection loaded dynamically from the API
- Multi-select autocomplete for actors and production companies
- Results displayed in a floating panel (top 10)
- Click a movie → copies the title to clipboard
- Live preview of the TMDB query
- Docker
- A TMDB API key (free at themoviedb.org)
docker run -d \
-e TMDB_API_KEY=<your_key> \
-p 8080:80 \
nem0oo/killer-search:latestOpen http://localhost:8080.
The API key is injected at runtime via envsubst — it is not baked into the image.
docker build --build-arg SHA=$(git rev-parse HEAD) -t killer-search . docker run -d -e TMDB_API_KEY=<your_key> -p 8080:80 killer-search
| Component | Technology |
|---|---|
| Frontend | HTML / CSS / Vanilla JavaScript |
| Server | Apache HTTPd (Docker image httpd:alpine) |
| CI/CD | GitHub Actions |
| Registry | Docker Hub |
| Deployment | n8n (webhook → Watchtower) |
- Build the Docker image
- Start the container
- Verify that
/version.txtcontains the correct commit SHA
- Tag the current
latestimage asprevious(for rollback) - Build and push the new
latestimage to Docker Hub - Trigger deployment via n8n webhook
Production is protected by htpasswd — no automated production check.
| Secret | Description |
|---|---|
DOCKERHUB_USERNAME |
Docker Hub username |
DOCKERHUB_TOKEN |
Docker Hub access token |
N8N_WEBHOOK_ID |
n8n webhook ID triggering the redeployment |