Tweak to dev/prod switch
This commit is contained in:
59
README.md
59
README.md
@@ -90,57 +90,42 @@ membership/
|
|||||||
|
|
||||||
## Frontend Development vs Production
|
## 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)
|
### 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
|
- Hot reloading and development features
|
||||||
- Access at: http://localhost:3500
|
- Access at: http://localhost:3500
|
||||||
- Start with: `docker-compose --profile dev up -d`
|
|
||||||
|
|
||||||
### Production Mode (Nginx)
|
### 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
|
```bash
|
||||||
# Start all services in development mode
|
docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d
|
||||||
docker-compose --profile dev 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
|
### Configuration
|
||||||
docker-compose --profile prod up -d
|
|
||||||
|
|
||||||
# Start only the frontend in development mode
|
Set your preferred defaults in `.env`:
|
||||||
docker-compose --profile dev up -d frontend
|
```bash
|
||||||
|
# Deployment mode (for reference only)
|
||||||
|
MODE=dev
|
||||||
|
|
||||||
# Start only the frontend in production mode
|
# Frontend allowed hosts (comma-separated)
|
||||||
docker-compose --profile prod up -d frontend-prod
|
VITE_ALLOWED_HOSTS=sasaprod,localhost,members.sasalliance.org
|
||||||
|
```
|
||||||
|
|
||||||
|
### Stopping Services
|
||||||
|
```bash
|
||||||
# Stop all services
|
# Stop all services
|
||||||
docker-compose down
|
docker compose -f docker-compose.yml -f docker-compose.dev.yml down
|
||||||
|
docker compose -f docker-compose.yml -f docker-compose.prod.yml down
|
||||||
# Check which services are running
|
|
||||||
docker-compose ps
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### 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
|
|
||||||
|
|
||||||
## Default Credentials
|
## Default Credentials
|
||||||
|
|
||||||
**Admin Account**:
|
**Admin Account**:
|
||||||
|
|||||||
@@ -18,7 +18,9 @@ services:
|
|||||||
- membership_private
|
- membership_private
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
|
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
|
||||||
timeout: 20s
|
start_period: 10s
|
||||||
|
interval: 5s
|
||||||
|
timeout: 5s
|
||||||
retries: 10
|
retries: 10
|
||||||
|
|
||||||
backend:
|
backend:
|
||||||
@@ -44,11 +46,12 @@ services:
|
|||||||
build:
|
build:
|
||||||
context: ./frontend
|
context: ./frontend
|
||||||
dockerfile: Dockerfile
|
dockerfile: Dockerfile
|
||||||
target: development # Default to development
|
target: development
|
||||||
container_name: membership_frontend
|
container_name: membership_frontend
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
environment:
|
environment:
|
||||||
- VITE_HOST_CHECK=false
|
- VITE_HOST_CHECK=false
|
||||||
|
- VITE_ALLOWED_HOSTS=${VITE_ALLOWED_HOSTS}
|
||||||
ports:
|
ports:
|
||||||
- "8050:3000" # Expose frontend to host
|
- "8050:3000" # Expose frontend to host
|
||||||
volumes:
|
volumes:
|
||||||
@@ -57,26 +60,22 @@ services:
|
|||||||
- ./frontend/vite.config.ts:/app/vite.config.ts
|
- ./frontend/vite.config.ts:/app/vite.config.ts
|
||||||
depends_on:
|
depends_on:
|
||||||
- backend
|
- 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:
|
networks:
|
||||||
- membership_private
|
- 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:
|
networks:
|
||||||
membership_private:
|
membership_private:
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ export default defineConfig({
|
|||||||
host: true,
|
host: true,
|
||||||
port: 3000,
|
port: 3000,
|
||||||
strictPort: true,
|
strictPort: true,
|
||||||
allowedHosts: ['sasaprod', 'localhost', 'members.sasalliance.org'],
|
allowedHosts: process.env.VITE_ALLOWED_HOSTS ? process.env.VITE_ALLOWED_HOSTS.split(',') : ['sasaprod', 'localhost'],
|
||||||
watch: {
|
watch: {
|
||||||
usePolling: true
|
usePolling: true
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user