Merge pull request #88 from chamikaJ/fix/docker-compose-fix

Remove legacy environment files and update Docker configuration for e…
This commit is contained in:
Chamika J
2025-04-28 12:44:15 +05:30
committed by GitHub
6 changed files with 113 additions and 220 deletions

34
.env
View File

@@ -1,34 +0,0 @@
# Database configuration
DB_USER=postgres
DB_PASSWORD=password
DB_NAME=worklenz_db
DB_HOST=db
DB_PORT=5432
DB_MAX_CLIENTS=50
# Server configuration
NODE_ENV=development
PORT=3000
SESSION_NAME=worklenz.sid
SESSION_SECRET=worklenz-session-secret
COOKIE_SECRET=worklenz-cookie-secret
# CORS
SOCKET_IO_CORS=http://localhost:5000
SERVER_CORS=*
# Storage configuration (MinIO)
STORAGE_PROVIDER=s3
AWS_REGION=us-east-1
AWS_BUCKET=worklenz-bucket
S3_ACCESS_KEY_ID=minioadmin
S3_SECRET_ACCESS_KEY=minioadmin
S3_URL=http://minio:9000
# Application URLs
HOSTNAME=localhost:5000
FRONTEND_URL=http://localhost:5000
# For local development, set these to the frontend service
LOGIN_FAILURE_REDIRECT=http://localhost:5000
LOGIN_SUCCESS_REDIRECT=http://localhost:5000/auth/authenticate

View File

@@ -1,34 +0,0 @@
# Database configuration
DB_USER=postgres
DB_PASSWORD=your_db_password
DB_NAME=worklenz_db
DB_HOST=localhost
DB_PORT=5432
DB_MAX_CLIENTS=50
# Server configuration
NODE_ENV=development
PORT=3000
SESSION_NAME=worklenz.sid
SESSION_SECRET=your_session_secret
COOKIE_SECRET=your_cookie_secret
# CORS
SOCKET_IO_CORS=http://localhost:5000
SERVER_CORS=*
# Storage configuration
STORAGE_PROVIDER=s3
AWS_REGION=your_aws_region
AWS_BUCKET=your_bucket_name
S3_ACCESS_KEY_ID=your_access_key_id
S3_SECRET_ACCESS_KEY=your_secret_access_key
S3_URL=your_s3_url
# Application URLs
HOSTNAME=localhost:5000
FRONTEND_URL=http://localhost:5000
# For local development
LOGIN_FAILURE_REDIRECT=http://localhost:5000
LOGIN_SUCCESS_REDIRECT=http://localhost:5000/auth/authenticate

View File

@@ -358,42 +358,34 @@ const s3Client = new S3Client({
### Environment Configuration
The `.env` file includes the necessary configuration for using MinIO:
The project uses the following environment file structure:
```
STORAGE_PROVIDER=s3
AWS_REGION=us-east-1
AWS_BUCKET=worklenz-bucket
S3_ACCESS_KEY_ID=minioadmin
S3_SECRET_ACCESS_KEY=minioadmin
S3_URL=http://minio:9000
- **Frontend**:
- `worklenz-frontend/.env.development` - Development environment variables
- `worklenz-frontend/.env.production` - Production build variables
- **Backend**:
- `worklenz-backend/.env` - Backend environment variables
### Setting Up Environment Files
The Docker environment script will create or overwrite all environment files:
```bash
# For HTTP/WS
./update-docker-env.sh your-hostname
# For HTTPS/WSS
./update-docker-env.sh your-hostname true
```
When the backend service starts, it will use these environment variables to connect to MinIO for file storage.
## Development
For development, you can use the provided Docker setup which includes all necessary dependencies. The code will be running inside containers, but you can still edit files locally and see changes reflected in real-time.
## Production Deployment
For production deployment:
1. Update the `.env` file with production settings
2. Build custom Docker images or use the provided ones
3. Deploy using Docker Compose or a container orchestration platform like Kubernetes
For MinIO in production, consider:
- Setting up proper credentials (change default minioadmin/minioadmin)
- Configuring persistent storage
- Setting up proper networking and access controls
- Using multiple MinIO instances for high availability
This script generates properly configured environment files for both development and production environments.
## Docker Deployment
### Local Development with Docker
1. Set up the environment variables:
1. Set up the environment files:
```bash
# For HTTP/WS
./update-docker-env.sh
@@ -401,8 +393,6 @@ For MinIO in production, consider:
# For HTTPS/WSS
./update-docker-env.sh localhost true
```
This will create a `.env` file with default settings for local development.
2. Run the application using Docker Compose:
```bash
@@ -417,7 +407,7 @@ For MinIO in production, consider:
When deploying to a remote server:
1. Set up the environment variables with your server's hostname:
1. Set up the environment files with your server's hostname:
```bash
# For HTTP/WS
./update-docker-env.sh your-server-hostname

View File

@@ -7,9 +7,8 @@ services:
depends_on:
backend:
condition: service_started
environment:
- VITE_API_URL=${VITE_API_URL:-http://backend:3000}
- VITE_SOCKET_URL=${VITE_SOCKET_URL:-ws://backend:3000}
env_file:
- ./worklenz-frontend/.env.production
networks:
- worklenz
@@ -23,36 +22,8 @@ services:
condition: service_healthy
minio:
condition: service_started
environment:
- AWS_REGION=${AWS_REGION:-us-east-1}
- BACKEND_PUBLIC_DIR
- BACKEND_VIEWS_DIR
- COMMIT_BUILD_IMMEDIATELY
- COOKIE_SECRET
- DB_HOST=${DB_HOST:-db}
- DB_MAX_CLIENTS
- DB_NAME=${DB_NAME:-worklenz_db}
- DB_PASSWORD=${DB_PASSWORD:-password}
- DB_PORT=${DB_PORT:-5432}
- DB_USER=${DB_USER:-postgres}
- GOOGLE_CALLBACK_URL
- GOOGLE_CLIENT_ID
- GOOGLE_CLIENT_SECRET
- HOSTNAME
- LOGIN_FAILURE_REDIRECT
- NODE_ENV=${NODE_ENV:-development}
- PORT=${PORT:-3000}
- SESSION_NAME
- SESSION_SECRET
- SLACK_WEBHOOK
- SOCKET_IO_CORS
- SOURCE_EMAIL
- USE_PG_NATIVE
- STORAGE_PROVIDER=${STORAGE_PROVIDER:-s3}
- AWS_BUCKET=${BUCKET:-worklenz-bucket}
- AWS_ACCESS_KEY_ID=${S3_ACCESS_KEY_ID:-minioadmin}
- AWS_SECRET_ACCESS_KEY=${S3_SECRET_ACCESS_KEY:-minioadmin}
- S3_URL=${S3_URL:-http://minio:9000}
env_file:
- ./worklenz-backend/.env
networks:
- worklenz

View File

@@ -19,32 +19,108 @@ else
WS_PREFIX="ws://"
fi
# Create or update root .env file
cat > .env << EOL
# Frontend Configuration
# Create or overwrite frontend .env.development file
mkdir -p worklenz-frontend
cat > worklenz-frontend/.env.development << EOL
# API Connection
VITE_API_URL=http://localhost:3000
VITE_SOCKET_URL=ws://localhost:3000
# Application Environment
VITE_APP_TITLE=Worklenz
VITE_APP_ENV=development
# Mixpanel
VITE_MIXPANEL_TOKEN=
# Recaptcha
VITE_ENABLE_RECAPTCHA=false
VITE_RECAPTCHA_SITE_KEY=
# Session ID
VITE_WORKLENZ_SESSION_ID=worklenz-session-id
EOL
# Create frontend .env.production file
cat > worklenz-frontend/.env.production << EOL
# API Connection
VITE_API_URL=${HTTP_PREFIX}${HOSTNAME}:3000
VITE_SOCKET_URL=${WS_PREFIX}${HOSTNAME}:3000
# Backend Configuration
# Application Environment
VITE_APP_TITLE=Worklenz
VITE_APP_ENV=production
# Mixpanel
VITE_MIXPANEL_TOKEN=
# Recaptcha
VITE_ENABLE_RECAPTCHA=false
VITE_RECAPTCHA_SITE_KEY=
# Session ID
VITE_WORKLENZ_SESSION_ID=worklenz-session-id
EOL
# Create backend environment file
mkdir -p worklenz-backend
cat > worklenz-backend/.env << EOL
# Server
NODE_ENV=production
PORT=3000
SESSION_NAME=worklenz.sid
SESSION_SECRET=change_me_in_production
COOKIE_SECRET=change_me_in_production
# CORS
SOCKET_IO_CORS=${HTTP_PREFIX}${HOSTNAME}:5000
SERVER_CORS=${HTTP_PREFIX}${HOSTNAME}:5000
# Database
DB_HOST=db
DB_PORT=5432
DB_USER=postgres
DB_PASSWORD=password
DB_NAME=worklenz_db
NODE_ENV=development
PORT=3000
DB_MAX_CLIENTS=50
USE_PG_NATIVE=true
# Storage Configuration
AWS_REGION=us-east-1
STORAGE_PROVIDER=s3
BUCKET=worklenz-bucket
S3_ACCESS_KEY_ID=minioadmin
S3_SECRET_ACCESS_KEY=minioadmin
AWS_REGION=us-east-1
AWS_BUCKET=worklenz-bucket
AWS_ACCESS_KEY_ID=minioadmin
AWS_SECRET_ACCESS_KEY=minioadmin
S3_URL=http://minio:9000
# Backend Directories
BACKEND_PUBLIC_DIR=./public
BACKEND_VIEWS_DIR=./views
# Host
HOSTNAME=${HOSTNAME}
FRONTEND_URL=${HTTP_PREFIX}${HOSTNAME}:5000
# Email
SOURCE_EMAIL=no-reply@example.com
# Notifications
SLACK_WEBHOOK=
# Other Settings
COMMIT_BUILD_IMMEDIATELY=true
# JWT Secret
JWT_SECRET=change_me_in_production
EOL
echo "Environment configuration updated for ${HOSTNAME} with" $([ "$USE_SSL" = "true" ] && echo "HTTPS/WSS" || echo "HTTP/WS")
echo "Created/updated environment files:"
echo "- worklenz-frontend/.env.development (development)"
echo "- worklenz-frontend/.env.production (production build)"
echo "- worklenz-backend/.env"
echo
echo "To run with Docker Compose, use: docker-compose up -d"
echo
echo "API URL: ${VITE_API_URL:-${HTTP_PREFIX}${HOSTNAME}:3000}"
echo "Socket URL: ${VITE_SOCKET_URL:-${WS_PREFIX}${HOSTNAME}:3000}"
echo "Production API URL: ${HTTP_PREFIX}${HOSTNAME}:3000"
echo "Production Socket URL: ${WS_PREFIX}${HOSTNAME}:3000"

View File

@@ -1,76 +0,0 @@
# Server
NODE_ENV=development
PORT=3000
SESSION_NAME=worklenz.sid
SESSION_SECRET="your_session_secret"
COOKIE_SECRET="your_cookie_secret"
# CORS
SOCKET_IO_CORS=http://localhost:5000
SERVER_CORS=*
# Database
DB_USER=postgres
DB_PASSWORD=your_db_password
DB_NAME=worklenz_db
DB_HOST=localhost
DB_PORT=5432
DB_MAX_CLIENTS=50
# Google Login
GOOGLE_CLIENT_ID="your_google_client_id"
GOOGLE_CLIENT_SECRET="your_google_client_secret"
GOOGLE_CALLBACK_URL="http://localhost:5000/secure/google/verify"
LOGIN_FAILURE_REDIRECT="http://localhost:5000/auth/authenticating"
LOGIN_SUCCESS_REDIRECT="http://localhost:5000/auth/authenticating"
# CLI
ANGULAR_DIST_DIR="path/to/frontend/dist"
ANGULAR_SRC_DIR="path/to/frontend"
BACKEND_PUBLIC_DIR="path/to/backend/public"
BACKEND_VIEWS_DIR="path/to/backend/views"
COMMIT_BUILD_IMMEDIATELY=false
# HOST
HOSTNAME=localhost:5000
# SLACK
SLACK_WEBHOOK=your_slack_webhook_url
USE_PG_NATIVE=false
# JWT SECRET
JWT_SECRET=your_jwt_secret
# FRONTEND_URL
FRONTEND_URL=http://localhost:5000
# STORAGE
STORAGE_PROVIDER=s3 # values s3 or azure
# AWS
AWS_REGION="your_aws_region"
AWS_ACCESS_KEY_ID="your_aws_access_key_id"
AWS_SECRET_ACCESS_KEY="your_aws_secret_access_key"
AWS_BUCKET="your_s3_bucket"
S3_URL="your_s3_url"
# Azure Storage
AZURE_STORAGE_ACCOUNT_NAME="your_storage_account_name"
AZURE_STORAGE_CONTAINER="your_storage_container"
AZURE_STORAGE_ACCOUNT_KEY="your_storage_account_key"
AZURE_STORAGE_URL="your_storage_url"
# DIRECTPAY
DP_STAGE=DEV
DP_URL=your_url
DP_MERCHANT_ID=your_merchant_id
DP_SECRET_KEY=your_secret_key
DP_API_KEY=your_api_key
CONTACT_US_EMAIL=support@example.com
GOOGLE_CAPTCHA_SECRET_KEY=your_captcha_secret_key
GOOGLE_CAPTCHA_PASS_SCORE=0.8
# Email Cronjobs
ENABLE_EMAIL_CRONJOBS=true