Tweak to dev/prod switch
This commit is contained in:
61
README.md
61
README.md
@@ -90,56 +90,41 @@ membership/
|
||||
|
||||
## Frontend Development vs Production
|
||||
|
||||
The frontend supports both development and production modes using Docker Compose profiles:
|
||||
Choose your deployment mode by using the appropriate docker-compose file:
|
||||
|
||||
### Development Mode (Vite)
|
||||
```bash
|
||||
docker compose -f docker-compose.yml -f docker-compose.dev.yml up -d
|
||||
```
|
||||
- Frontend served by Vite dev server on port 3500
|
||||
- Hot reloading and development features
|
||||
- Access at: http://localhost:3500
|
||||
- Start with: `docker-compose --profile dev up -d`
|
||||
|
||||
### Production Mode (Nginx)
|
||||
- Optimized static files served by Nginx
|
||||
- Access at: http://localhost:8080
|
||||
- Start with: `docker-compose --profile prod up -d`
|
||||
|
||||
### Usage Examples
|
||||
|
||||
```bash
|
||||
# Start all services in development mode
|
||||
docker-compose --profile dev up -d
|
||||
docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d
|
||||
```
|
||||
- Frontend served by Nginx on port 8050
|
||||
- Optimized static files, production-ready
|
||||
- Access at: http://localhost:8050
|
||||
|
||||
# Start all services in production mode
|
||||
docker-compose --profile prod up -d
|
||||
### Configuration
|
||||
|
||||
# Start only the frontend in development mode
|
||||
docker-compose --profile dev up -d frontend
|
||||
Set your preferred defaults in `.env`:
|
||||
```bash
|
||||
# Deployment mode (for reference only)
|
||||
MODE=dev
|
||||
|
||||
# Start only the frontend in production mode
|
||||
docker-compose --profile prod up -d frontend-prod
|
||||
|
||||
# Stop all services
|
||||
docker-compose down
|
||||
|
||||
# Check which services are running
|
||||
docker-compose ps
|
||||
# Frontend allowed hosts (comma-separated)
|
||||
VITE_ALLOWED_HOSTS=sasaprod,localhost,members.sasalliance.org
|
||||
```
|
||||
|
||||
### Profile Details
|
||||
|
||||
- **`dev` profile**: Includes the `frontend` service (Vite dev server)
|
||||
- **`prod` profile**: Includes the `frontend-prod` service (Nginx)
|
||||
- **Default**: No frontend service runs unless you specify a profile
|
||||
|
||||
### For Production Deployment
|
||||
|
||||
When deploying to production with Caddy:
|
||||
|
||||
1. Start services in production mode:
|
||||
```bash
|
||||
docker-compose --profile prod up -d
|
||||
```
|
||||
|
||||
2. Configure Caddy to proxy to `localhost:8080` for the frontend and `localhost:6000` for the API
|
||||
### Stopping Services
|
||||
```bash
|
||||
# Stop all services
|
||||
docker compose -f docker-compose.yml -f docker-compose.dev.yml down
|
||||
docker compose -f docker-compose.yml -f docker-compose.prod.yml down
|
||||
```
|
||||
|
||||
## Default Credentials
|
||||
|
||||
|
||||
@@ -18,7 +18,9 @@ services:
|
||||
- membership_private
|
||||
healthcheck:
|
||||
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
|
||||
timeout: 20s
|
||||
start_period: 10s
|
||||
interval: 5s
|
||||
timeout: 5s
|
||||
retries: 10
|
||||
|
||||
backend:
|
||||
@@ -44,11 +46,12 @@ services:
|
||||
build:
|
||||
context: ./frontend
|
||||
dockerfile: Dockerfile
|
||||
target: development # Default to development
|
||||
target: development
|
||||
container_name: membership_frontend
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- VITE_HOST_CHECK=false
|
||||
- VITE_ALLOWED_HOSTS=${VITE_ALLOWED_HOSTS}
|
||||
ports:
|
||||
- "8050:3000" # Expose frontend to host
|
||||
volumes:
|
||||
@@ -57,26 +60,22 @@ services:
|
||||
- ./frontend/vite.config.ts:/app/vite.config.ts
|
||||
depends_on:
|
||||
- backend
|
||||
networks:
|
||||
- membership_private # Access to backend on private network
|
||||
profiles:
|
||||
- dev # Only run in development
|
||||
|
||||
frontend-prod:
|
||||
build:
|
||||
context: ./frontend
|
||||
dockerfile: Dockerfile
|
||||
target: production
|
||||
container_name: membership_frontend_prod
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "8050:80" # Nginx default port
|
||||
depends_on:
|
||||
- backend
|
||||
networks:
|
||||
- membership_private
|
||||
profiles:
|
||||
- prod # Only run in production
|
||||
|
||||
#frontend-prod:
|
||||
# build:
|
||||
# context: ./frontend
|
||||
# dockerfile: Dockerfile
|
||||
# target: production
|
||||
# container_name: membership_frontend_prod
|
||||
# restart: unless-stopped
|
||||
# ports:
|
||||
# - "8050:80" # Nginx default port
|
||||
# depends_on:
|
||||
# - backend
|
||||
# networks:
|
||||
# - membership_private
|
||||
|
||||
networks:
|
||||
membership_private:
|
||||
|
||||
@@ -7,7 +7,7 @@ export default defineConfig({
|
||||
host: true,
|
||||
port: 3000,
|
||||
strictPort: true,
|
||||
allowedHosts: ['sasaprod', 'localhost', 'members.sasalliance.org'],
|
||||
allowedHosts: process.env.VITE_ALLOWED_HOSTS ? process.env.VITE_ALLOWED_HOSTS.split(',') : ['sasaprod', 'localhost'],
|
||||
watch: {
|
||||
usePolling: true
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user