- Use image 10.0.10.205:3000/bert.hausmans/mariadb:11 in compose - Add deploy/mariadb/Dockerfile (FROM mariadb:11, platform amd64) - Add scripts/push-mariadb-to-registry.sh to build and push amd64 image once - Update README with one-time push step and troubleshooting Co-authored-by: Cursor <cursoragent@cursor.com>
4.0 KiB
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 Gitea’s container registry (10.0.10.205:3000) from your dev machine so Dockge can pull them.
- 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).
- Docker Desktop (Mac): Settings → Docker Engine → add
- Each release: From the project root:
./scripts/docker-build-push.sh 1.0.0(or any version; omit to uselatestor git describe).- Or manually: set
VERSION=1.0.0,REGISTRY=10.0.10.205:3000,OWNER=bert.hausmans, thendocker build -t $REGISTRY/$OWNER/event-uploader-api:$VERSION ./api(and same foradmin,upload), thendocker pushfor 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 |
| MariaDB | 3004 | 3306 | (internal; use 3004 only for direct DB access) |
One-time setup in Dockge
- Add stack: point Dockge at this repo’s
deploy/folder (or pastedocker-compose.yml). - Create
.envin the stack directory (or use Dockge’s env) with at least:TAG=latest(or e.g.1.0.0)DB_PASSWORD=...DB_DATABASE=event_uploaderAPP_KEY=...(Laravelphp 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
- Ensure Docker on the server has
10.0.10.205:3000ininsecure-registriesand rundocker login 10.0.10.205:3000. - One-time: If the server fails with "no matching manifest for linux/amd64" when pulling the database image, push the amd64 MariaDB image to Gitea from your dev machine:
./scripts/push-mariadb-to-registry.sh(afterdocker login 10.0.10.205:3000). The stack uses this image so the server only pulls from Gitea. - 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.0in.env, thendocker 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.
- Match the tag – In the stack
.env, setTAGto the exact tag you pushed (e.g. the git hash from the build output, orlatest). After running./scripts/docker-build-push.sh, the script prints the tag and now also pushes:latest, soTAG=latestworks. - Re-push all images – From project root run
./scripts/docker-build-push.shagain so api, admin, and upload are all pushed with the same tag. - Registry login on the server – Where Dockge runs, ensure
docker login 10.0.10.205:3000has been done and that Docker has10.0.10.205:3000ininsecure-registries(if using HTTP).
"no matching manifest for linux/amd64" (database)
The stack uses MariaDB 11 from your Gitea registry (10.0.10.205:3000/bert.hausmans/mariadb:11). If that image is missing or the server can’t pull from Docker Hub, run once from your dev machine (after docker login 10.0.10.205:3000): ./scripts/push-mariadb-to-registry.sh. It pulls the amd64 image from Docker Hub and pushes it to Gitea so the server only pulls from Gitea.