Files
event-uploader/deploy/README.md
bert.hausmans 65b41ba266 Fix Docker builds, TS errors, and deploy config
- API: PHP 8.4, composer install --no-scripts + dump-autoload after COPY
- Admin: fix TS (Event.upload_password, unused router, api XSRF, window.open)
- Upload: Uppy v5 (hideProgressDetails, headers, destroy), unused watch, api XSRF
- Build script: loop over api/admin/upload, push :latest as well as VERSION
- Deploy: MySQL from docker.io, platform linux/amd64; README troubleshooting

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-03 14:00:09 +01:00

58 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Deploy event-uploader to Dockge
Production stack: images from Gitea registry only. Use from Dockge on the home server (10.0.10.189:5001).
## Build and push images
Build and upload images to Giteas container registry (`10.0.10.205:3000`) from your dev machine so Dockge can pull them.
1. **One-time:** Allow HTTP registry and log in:
- Docker Desktop (Mac): Settings → Docker Engine → add `"insecure-registries": ["10.0.10.205:3000"]`, Apply.
- Run: `docker login 10.0.10.205:3000` (username: `bert.hausmans`, password: Gitea password or a personal access token with package read/write).
2. **Each release:** From the project root:
- `./scripts/docker-build-push.sh 1.0.0` (or any version; omit to use `latest` or git describe).
- Or manually: set `VERSION=1.0.0`, `REGISTRY=10.0.10.205:3000`, `OWNER=bert.hausmans`, then `docker build -t $REGISTRY/$OWNER/event-uploader-api:$VERSION ./api` (and same for `admin`, `upload`), then `docker push` for each.
After pushing, deploy on the server: set `TAG=1.0.0` in the stack `.env`, then in Dockge use **Pull** and **Redeploy**.
## Ports (3000 range to avoid conflicts)
| Service | Host port | Container | URL (example) |
|---------|-----------|-----------|---------------|
| API | 3001 | 8000 | http://10.0.10.189:3001 |
| Admin | 3002 | 80 | http://10.0.10.189:3002 |
| Upload | 3003 | 80 | http://10.0.10.189:3003 |
| MySQL | 3004 | 3306 | (internal; use 3004 only for direct DB access) |
## One-time setup in Dockge
1. Add stack: point Dockge at this repos `deploy/` folder (or paste `docker-compose.yml`).
2. Create `.env` in the stack directory (or use Dockges env) with at least:
- `TAG=latest` (or e.g. `1.0.0`)
- `DB_PASSWORD=...`
- `DB_DATABASE=event_uploader`
- `APP_KEY=...` (Laravel `php artisan key:generate`)
- `APP_URL=http://10.0.10.189:3001` (or your public URL)
- `SESSION_DOMAIN=10.0.10.189` (or your domain)
- `SANCTUM_STATEFUL_DOMAINS=10.0.10.189:3002,10.0.10.189:3003`
- Google OAuth if used: `GOOGLE_CLIENT_ID`, `GOOGLE_CLIENT_SECRET`, `GOOGLE_REDIRECT_URI`
3. Ensure Docker on the server has `10.0.10.205:3000` in `insecure-registries` and run `docker login 10.0.10.205:3000`.
4. First deploy: Pull, then Start (or `docker compose -f deploy/docker-compose.yml pull && docker compose -f deploy/docker-compose.yml up -d`).
## Deploy new version
- In Dockge: open the stack → **Pull** (to fetch new images from Gitea) → **Redeploy** (or Stop + Start).
- Or on the server: set `TAG=1.0.0` in `.env`, then `docker compose pull && docker compose up -d`.
## Troubleshooting: "manifest unknown" (e.g. for admin)
This means the registry has no image for the tag Dockge is using.
1. **Match the tag** In the stack `.env`, set `TAG` to the exact tag you pushed (e.g. the git hash from the build output, or `latest`). After running `./scripts/docker-build-push.sh`, the script prints the tag and now also pushes `:latest`, so `TAG=latest` works.
2. **Re-push all images** From project root run `./scripts/docker-build-push.sh` again so api, admin, and upload are all pushed with the same tag.
3. **Registry login on the server** Where Dockge runs, ensure `docker login 10.0.10.205:3000` has been done and that Docker has `10.0.10.205:3000` in `insecure-registries` (if using HTTP).
### "no matching manifest for linux/amd64" (MySQL)
The stack pins MySQL to `docker.io/library/mysql:8.0` with `platform: linux/amd64` so the server pulls the correct image from Docker Hub. If your Dockge server is ARM (e.g. Raspberry Pi), change the MySQL service in `docker-compose.yml` to `platform: linux/arm64`.