Added support for air-gapped and enterprise environments where npm package access is restricted, specifically addressing esbuild platform binary download issues. **New Files:** - Dockerfile.frontend.prebuilt: Alternative Dockerfile that uses pre-built Angular files - DEPLOYMENT.md: Comprehensive deployment guide with two options **Changes:** - package.json: Added optionalDependencies for esbuild platform binaries - @esbuild/darwin-arm64 - @esbuild/darwin-x64 - @esbuild/linux-arm64 - @esbuild/linux-x64 **Deployment Options:** **Option 1 - Standard Build (current default):** - Builds Angular in Docker - Requires npm registry access - Best for cloud/development **Option 2 - Pre-built (for air-gapped):** 1. Build Angular locally: npm run build:prod 2. Change dockerfile in docker-compose.yml to Dockerfile.frontend.prebuilt 3. Docker only needs to copy files, no npm required - No npm registry access needed during Docker build - Faster, more reliable builds - Best for enterprise/air-gapped/CI-CD **Troubleshooting:** See DEPLOYMENT.md for full troubleshooting guide including: - esbuild platform binary issues - Custom npm registry configuration - Environment-specific recommendations This addresses npm package access issues in restricted environments while maintaining flexibility for standard deployments. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
2.4 KiB
Deployment Options
This project supports two deployment strategies for the Angular frontend, depending on your environment's network access.
Option 1: Standard Build (Internet Access Required)
Use the standard Dockerfile.frontend which builds the Angular app inside Docker.
Requirements:
- Internet access to npm registry
- Docker build environment
Usage:
./quickstart.sh
# or
docker-compose up -d --build
This uses Dockerfile.frontend which:
- Installs npm dependencies in Docker
- Builds Angular app in Docker
- Serves with nginx
Option 2: Pre-built Deployment (Air-Gapped/Restricted Environments)
Use Dockerfile.frontend.prebuilt for environments with restricted npm access or when esbuild platform binaries cannot be downloaded.
Requirements:
- Node.js 24+ installed locally
- npm installed locally
- No internet required during Docker build
Usage:
Step 1: Build Angular app locally
cd frontend
npm install # Only needed once or when dependencies change
npm run build:prod
cd ..
Step 2: Update docker-compose.yml
Edit docker-compose.yml and change the frontend dockerfile:
frontend:
build:
context: .
dockerfile: Dockerfile.frontend.prebuilt # <-- Change this line
ports:
- "4200:80"
depends_on:
- api
Step 3: Build and deploy
docker-compose up -d --build
This uses Dockerfile.frontend.prebuilt which:
- Copies pre-built Angular files from
frontend/dist/ - Serves with nginx
- No npm/node required in Docker
Troubleshooting
esbuild Platform Binary Issues
If you see errors like:
Could not resolve "@esbuild/darwin-arm64"
Solution 1: Use Option 2 (Pre-built) above
Solution 2: Add platform binaries to package.json (already included):
"optionalDependencies": {
"@esbuild/darwin-arm64": "^0.25.4",
"@esbuild/darwin-x64": "^0.25.4",
"@esbuild/linux-arm64": "^0.25.4",
"@esbuild/linux-x64": "^0.25.4"
}
Solution 3: Use custom npm registry with cached esbuild binaries
Custom NPM Registry
For both options, you can use a custom npm registry:
# Set in .env file
NPM_REGISTRY=http://your-npm-proxy:8081/repository/npm-proxy/
# Or inline
NPM_REGISTRY=http://your-proxy ./quickstart.sh
Recommendation
- Development/Cloud: Use Option 1 (standard)
- Air-gapped/Enterprise: Use Option 2 (pre-built)
- CI/CD: Use Option 2 for faster, more reliable builds