docker run -d \
--name tvx \
-p 8777:80 \
--restart unless-stopped \
dopeytree/tvx:latestAccess at: http://localhost:8777
Create docker-compose.yml:
version: '3.8'
services:
tvx:
image: dopeytree/tvx:latest
container_name: tvx
ports:
- "8777:80"
restart: unless-stopped
environment:
- TZ=America/New_YorkRun:
docker-compose up -ddocker build -t tvx .docker run -d -p 8777:80 --name tvx tvxChange the host port (left side):
docker run -d -p 8080:80 --name tvx dopeytree/tvx:latestAccess at: http://localhost:8080
Set your timezone:
docker run -d \
-p 8777:80 \
-e TZ=Europe/London \
--name tvx \
dopeytree/tvx:latestTVx stores settings in browser localStorage (client-side), so no volume mounting is needed.
- Base: Alpine Linux (nginx:alpine)
- Size: ~50MB compressed
- Architecture: Multi-arch (amd64, arm64)
- Health Check: Included
- Compression: Gzip enabled
- Cache: Optimized for static assets
Mount your own config:
docker run -d \
-p 8777:80 \
-v /path/to/nginx.conf:/etc/nginx/conf.d/default.conf:ro \
--name tvx \
dopeytree/tvx:latestBehind Nginx/Traefik, use a simple proxy pass. TVx is a SPA, so all routes should point to index.html.
Example nginx reverse proxy:
location / {
proxy_pass http://localhost:8777;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}- Create Docker Hub account at https://hub.docker.com
- Create repository:
dopeytree/tvx - Generate access token: Account Settings → Security → New Access Token
- Add to GitHub Secrets:
DOCKER_USERNAME: Your Docker Hub usernameDOCKER_PASSWORD: Your access token
The GitHub Actions workflow (.github/workflows/docker-build.yml) automatically:
- Builds on every push to
main - Creates multi-arch images (amd64, arm64)
- Tags with
latestand version numbers - Pushes to Docker Hub
# Build
docker build -t dopeytree/tvx:latest .
# Login
docker login
# Push
docker push dopeytree/tvx:latest# Create buildx builder
docker buildx create --name multiarch --use
# Build and push for multiple architectures
docker buildx build \
--platform linux/amd64,linux/arm64 \
-t dopeytree/tvx:latest \
--push \
.docker logs tvxdocker inspect --format='{{.State.Health.Status}}' tvxdocker restart tvxdocker rm -f tvx
docker run -d -p 3000:80 --name tvx dopeytree/tvx:latestdocker pull dopeytree/tvx:latest
docker rm -f tvx
docker run -d -p 8777:80 --restart unless-stopped --name tvx dopeytree/tvx:latestdocker-compose pull
docker-compose up -d