Update gitignore, combined docker for frotnend and api
This commit is contained in:
140
docs/DEPLOYMENT.md
Normal file
140
docs/DEPLOYMENT.md
Normal file
@@ -0,0 +1,140 @@
|
||||
# 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:**
|
||||
```bash
|
||||
./quickstart.sh
|
||||
# or
|
||||
docker-compose up -d --build
|
||||
```
|
||||
|
||||
This uses `Dockerfile.frontend` which:
|
||||
1. Installs npm dependencies in Docker
|
||||
2. Builds Angular app in Docker
|
||||
3. Serves with nginx
|
||||
|
||||
---
|
||||
|
||||
## Option 2: Pre-built Deployment (Air-Gapped/Restricted Environments) ⭐ RECOMMENDED
|
||||
|
||||
Use `Dockerfile.frontend.prebuilt` for environments with restricted npm access.
|
||||
|
||||
**Requirements:**
|
||||
- Node.js 18+ installed locally (on a machine with npm access)
|
||||
- npm installed locally
|
||||
- No internet required during Docker build
|
||||
|
||||
**Note:** This project uses Angular 17 with webpack bundler (not Vite) for better compatibility with restricted npm environments.
|
||||
|
||||
**Usage:**
|
||||
|
||||
### Quick Start (Recommended)
|
||||
```bash
|
||||
./quickstart-airgap.sh
|
||||
```
|
||||
|
||||
This script will:
|
||||
1. Build the Angular app locally
|
||||
2. Start all Docker containers
|
||||
3. Verify the deployment
|
||||
|
||||
### Manual Steps
|
||||
|
||||
### Step 1: Build Angular app locally
|
||||
**IMPORTANT:** You MUST run this step BEFORE `docker-compose up`!
|
||||
|
||||
```bash
|
||||
# Option A: Use the helper script
|
||||
./build-for-airgap.sh
|
||||
|
||||
# Option B: Build manually
|
||||
cd frontend
|
||||
npm install # Only needed once or when dependencies change
|
||||
npm run build:prod
|
||||
cd ..
|
||||
```
|
||||
|
||||
This creates `frontend/dist/frontend/browser/` which Docker will copy.
|
||||
|
||||
### Step 2: Update docker-compose.yml
|
||||
Edit `docker-compose.yml` and change the frontend dockerfile:
|
||||
|
||||
```yaml
|
||||
frontend:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile.frontend.prebuilt # <-- Change this line
|
||||
ports:
|
||||
- "4200:80"
|
||||
depends_on:
|
||||
- api
|
||||
```
|
||||
|
||||
### Step 3: Build and deploy
|
||||
```bash
|
||||
docker-compose up -d --build
|
||||
```
|
||||
|
||||
This uses `Dockerfile.frontend.prebuilt` which:
|
||||
1. Copies pre-built Angular files from `frontend/dist/`
|
||||
2. Serves with nginx
|
||||
3. No npm/node required in Docker
|
||||
|
||||
---
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Build Tool Package Issues
|
||||
|
||||
If you see errors about missing packages like:
|
||||
```
|
||||
Cannot find package "vite"
|
||||
Cannot find package "esbuild"
|
||||
Cannot find package "rollup"
|
||||
```
|
||||
|
||||
**Solution:** This project uses Angular 17 with webpack bundler specifically to avoid these issues. If you still encounter package access problems in your restricted environment, use Option 2 (Pre-built) deployment above, which eliminates all npm dependencies in Docker.
|
||||
|
||||
### Custom NPM Registry
|
||||
|
||||
For both options, you can use a custom npm registry:
|
||||
|
||||
```bash
|
||||
# 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) ⭐ **RECOMMENDED**
|
||||
- **CI/CD**: Use Option 2 for faster, more reliable builds
|
||||
- **Restricted npm access**: Use Option 2 (pre-built) ⭐ **REQUIRED**
|
||||
|
||||
---
|
||||
|
||||
## Build Strategy for Restricted Environments
|
||||
|
||||
**This project uses Angular 17 with webpack** instead of Angular 19 with Vite specifically for better compatibility with restricted npm environments. Webpack has fewer platform-specific binary dependencies than Vite.
|
||||
|
||||
If you encounter any package access errors during builds:
|
||||
- `Cannot find package "vite"`
|
||||
- `Cannot find package "rollup"`
|
||||
- `Cannot find package "esbuild"`
|
||||
- Any platform-specific binary errors
|
||||
|
||||
**Solution:** Use Option 2 (Pre-built) deployment. This completely avoids npm installation in Docker and eliminates all build tool dependency issues.
|
||||
Reference in New Issue
Block a user