Overview
Docker image builds for legacy services happen on ai.matthewstevens.org (SSH alias: ai). The NAS (a1.matthewstevens.org) is a deployment target ONLY – never build images there.
Important: New services should use Nix builds per the Sovereign Architecture SOP. Docker builds are only for legacy services that have not been migrated.
Build Server: ai.matthewstevens.org
SSH Access
| |
Environment Setup
The build server requires explicit PATH configuration:
| |
This is required in every session. The default shell PATH does not include Docker/OrbStack binaries.
Multiarch Builder
A multiarch buildx builder is preconfigured for cross-platform builds:
| |
If the builder does not exist:
| |
Procedure: Build and Push Image
For Docker Hub (Legacy/Auxiliary)
| |
For Amazon ECR (Phenom Drop)
| |
Registry Conventions
| Registry | Namespace | Usage | Privacy |
|---|---|---|---|
| Docker Hub | applepublicdotcom | Legacy/auxiliary images ONLY | PRIVATE repos |
| Docker Hub | applepublic | DO NOT USE | Public (wrong namespace) |
| Scaleway CR | rg.fr-par.scw.cloud/sanmarcsoft/ | Production services | EU sovereign |
| Amazon ECR | <account>.dkr.ecr.us-east-1.amazonaws.com/ | Phenom Drop only | Private |
Critical Rules
- NEVER use the
applepublicnamespace – that is the public namespace. Always useapplepublicdotcom(private). - NEVER build on the NAS – the NAS pulls pre-built images only.
- NEVER push to Docker Hub for production – use Scaleway Container Registry via Skopeo.
NAS Deployment
The NAS (a1.matthewstevens.org) only pulls and runs pre-built images:
| |
Testing Pipeline
The correct pipeline for Docker-based services is:
- Build on
ai.matthewstevens.org - Push with
:testingtag - Deploy to NAS testing server
- Verify on testing server
- Run full test suite
- Retag as
:production - Deploy to production via GitHub Actions
No image receives a :production tag without ALL tests passing.
Troubleshooting
docker: command not found: Set PATH explicitly:export PATH=/usr/local/bin:/opt/homebrew/bin:$HOME/.orbstack/bin:$PATH- Builder not found: Recreate with
docker buildx create --name multiarch --use - Push authentication failure: Re-login to the appropriate registry
- Platform mismatch: Always specify
--platform linux/amd64for NAS/server deployments