search console SEO ableitungen
This commit is contained in:
552
docker/README.md
552
docker/README.md
@@ -1,276 +1,276 @@
|
||||
# Docker Setup for QR Master
|
||||
|
||||
This directory contains Docker configuration files for running QR Master with PostgreSQL database.
|
||||
|
||||
## 🚀 Quick Start
|
||||
|
||||
### Development (Database Only)
|
||||
|
||||
For local development where you run Next.js on your host machine:
|
||||
|
||||
```bash
|
||||
# Start PostgreSQL and Redis
|
||||
docker-compose -f docker-compose.dev.yml up -d
|
||||
|
||||
# Run database migrations
|
||||
npm run db:migrate
|
||||
|
||||
# Start the development server
|
||||
npm run dev
|
||||
```
|
||||
|
||||
Access:
|
||||
- **Application**: http://localhost:3050
|
||||
- **Database**: localhost:5432
|
||||
- **Redis**: localhost:6379
|
||||
- **Adminer (DB UI)**: http://localhost:8080
|
||||
|
||||
### Production (Full Stack)
|
||||
|
||||
To run the entire application in Docker:
|
||||
|
||||
```bash
|
||||
# Build and start all services
|
||||
docker-compose up -d --build
|
||||
|
||||
# Run database migrations
|
||||
docker-compose exec web npx prisma migrate deploy
|
||||
|
||||
# (Optional) Seed the database
|
||||
docker-compose exec web npm run db:seed
|
||||
```
|
||||
|
||||
Access:
|
||||
- **Application**: http://localhost:3050
|
||||
- **Database**: localhost:5432
|
||||
- **Redis**: localhost:6379
|
||||
- **Adminer (DB UI)**: http://localhost:8080 (only with --profile dev)
|
||||
|
||||
To include Adminer in production mode:
|
||||
```bash
|
||||
docker-compose --profile dev up -d
|
||||
```
|
||||
|
||||
## 📦 Services
|
||||
|
||||
### PostgreSQL (db)
|
||||
- **Image**: postgres:16-alpine
|
||||
- **Port**: 5432
|
||||
- **Database**: qrmaster
|
||||
- **User**: postgres
|
||||
- **Password**: postgres (change in production!)
|
||||
|
||||
### Redis (redis)
|
||||
- **Image**: redis:7-alpine
|
||||
- **Port**: 6379
|
||||
- **Max Memory**: 256MB with LRU eviction policy
|
||||
- **Persistence**: AOF enabled
|
||||
|
||||
### Next.js Application (web)
|
||||
- **Port**: 3050
|
||||
- **Environment**: Production
|
||||
- **Health Check**: HTTP GET on localhost:3050
|
||||
|
||||
### Adminer (adminer)
|
||||
- **Image**: adminer:latest
|
||||
- **Port**: 8080
|
||||
- **Purpose**: Database management UI
|
||||
- **Profile**: dev (optional in production)
|
||||
|
||||
## 🗄️ Database Management
|
||||
|
||||
### Migrations
|
||||
|
||||
```bash
|
||||
# Create a new migration
|
||||
npm run db:migrate
|
||||
|
||||
# Deploy migrations in Docker
|
||||
docker-compose exec web npx prisma migrate deploy
|
||||
|
||||
# Reset database (caution!)
|
||||
docker-compose exec web npx prisma migrate reset
|
||||
```
|
||||
|
||||
### Prisma Studio
|
||||
|
||||
```bash
|
||||
# On host machine
|
||||
npm run db:studio
|
||||
|
||||
# Or in Docker
|
||||
docker-compose exec web npx prisma studio
|
||||
```
|
||||
|
||||
### Backup and Restore
|
||||
|
||||
```bash
|
||||
# Backup
|
||||
docker-compose exec db pg_dump -U postgres qrmaster > backup.sql
|
||||
|
||||
# Restore
|
||||
docker-compose exec -T db psql -U postgres qrmaster < backup.sql
|
||||
```
|
||||
|
||||
## 🔧 Useful Commands
|
||||
|
||||
### View Logs
|
||||
|
||||
```bash
|
||||
# All services
|
||||
docker-compose logs -f
|
||||
|
||||
# Specific service
|
||||
docker-compose logs -f web
|
||||
docker-compose logs -f db
|
||||
docker-compose logs -f redis
|
||||
```
|
||||
|
||||
### Shell Access
|
||||
|
||||
```bash
|
||||
# Next.js container
|
||||
docker-compose exec web sh
|
||||
|
||||
# PostgreSQL container
|
||||
docker-compose exec db psql -U postgres -d qrmaster
|
||||
|
||||
# Redis container
|
||||
docker-compose exec redis redis-cli
|
||||
```
|
||||
|
||||
### Stop and Clean
|
||||
|
||||
```bash
|
||||
# Stop all services
|
||||
docker-compose down
|
||||
|
||||
# Stop and remove volumes (deletes data!)
|
||||
docker-compose down -v
|
||||
|
||||
# Stop and remove everything including images
|
||||
docker-compose down -v --rmi all
|
||||
```
|
||||
|
||||
## 🔐 Environment Variables
|
||||
|
||||
Create a `.env` file in the root directory (copy from `env.example`):
|
||||
|
||||
```bash
|
||||
cp env.example .env
|
||||
```
|
||||
|
||||
Required variables:
|
||||
- `DATABASE_URL`: PostgreSQL connection string
|
||||
- `NEXTAUTH_SECRET`: Secret for NextAuth.js
|
||||
- `NEXTAUTH_URL`: Application URL
|
||||
- `IP_SALT`: Salt for hashing IP addresses
|
||||
- `REDIS_URL`: Redis connection string
|
||||
|
||||
## 🌐 Network Architecture
|
||||
|
||||
All services run on a custom bridge network `qrmaster-network` which allows:
|
||||
- Service discovery by container name
|
||||
- Network isolation from other Docker projects
|
||||
- Internal DNS resolution
|
||||
|
||||
## 📊 Volumes
|
||||
|
||||
### Persistent Data
|
||||
- `dbdata`: PostgreSQL data
|
||||
- `redisdata`: Redis data
|
||||
|
||||
### Volume Management
|
||||
|
||||
```bash
|
||||
# List volumes
|
||||
docker volume ls
|
||||
|
||||
# Inspect volume
|
||||
docker volume inspect qrmaster_dbdata
|
||||
|
||||
# Remove all unused volumes
|
||||
docker volume prune
|
||||
```
|
||||
|
||||
## 🐛 Troubleshooting
|
||||
|
||||
### Database Connection Issues
|
||||
|
||||
```bash
|
||||
# Check if database is ready
|
||||
docker-compose exec db pg_isready -U postgres
|
||||
|
||||
# Check database logs
|
||||
docker-compose logs db
|
||||
|
||||
# Restart database
|
||||
docker-compose restart db
|
||||
```
|
||||
|
||||
### Application Won't Start
|
||||
|
||||
```bash
|
||||
# Check health status
|
||||
docker-compose ps
|
||||
|
||||
# View application logs
|
||||
docker-compose logs web
|
||||
|
||||
# Rebuild the application
|
||||
docker-compose up -d --build web
|
||||
```
|
||||
|
||||
### Port Already in Use
|
||||
|
||||
If ports 3050, 5432, 6379, or 8080 are already in use:
|
||||
|
||||
```bash
|
||||
# Find process using port
|
||||
# Windows
|
||||
netstat -ano | findstr :3050
|
||||
|
||||
# Linux/Mac
|
||||
lsof -i :3050
|
||||
|
||||
# Kill process or change port in docker-compose.yml
|
||||
```
|
||||
|
||||
## 🔄 Updates and Maintenance
|
||||
|
||||
### Update Dependencies
|
||||
|
||||
```bash
|
||||
# Update Node packages
|
||||
npm update
|
||||
|
||||
# Rebuild Docker images
|
||||
docker-compose build --no-cache
|
||||
```
|
||||
|
||||
### Update Docker Images
|
||||
|
||||
```bash
|
||||
# Pull latest images
|
||||
docker-compose pull
|
||||
|
||||
# Restart with new images
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
## 📝 Notes
|
||||
|
||||
- **Development**: Use `docker-compose.dev.yml` to run only the database and Redis
|
||||
- **Production**: Use `docker-compose.yml` to run the full stack
|
||||
- **Security**: Always change default passwords in production
|
||||
- **Backups**: Implement regular database backups in production
|
||||
- **Scaling**: For production, consider using PostgreSQL replication and Redis Sentinel
|
||||
|
||||
## 🆘 Support
|
||||
|
||||
For more information, see:
|
||||
- [Docker Documentation](https://docs.docker.com/)
|
||||
- [PostgreSQL Documentation](https://www.postgresql.org/docs/)
|
||||
- [Prisma Documentation](https://www.prisma.io/docs/)
|
||||
- [Next.js Documentation](https://nextjs.org/docs)
|
||||
|
||||
# Docker Setup for QR Master
|
||||
|
||||
This directory contains Docker configuration files for running QR Master with PostgreSQL database.
|
||||
|
||||
## 🚀 Quick Start
|
||||
|
||||
### Development (Database Only)
|
||||
|
||||
For local development where you run Next.js on your host machine:
|
||||
|
||||
```bash
|
||||
# Start PostgreSQL and Redis
|
||||
docker-compose -f docker-compose.dev.yml up -d
|
||||
|
||||
# Run database migrations
|
||||
npm run db:migrate
|
||||
|
||||
# Start the development server
|
||||
npm run dev
|
||||
```
|
||||
|
||||
Access:
|
||||
- **Application**: http://localhost:3050
|
||||
- **Database**: localhost:5432
|
||||
- **Redis**: localhost:6379
|
||||
- **Adminer (DB UI)**: http://localhost:8080
|
||||
|
||||
### Production (Full Stack)
|
||||
|
||||
To run the entire application in Docker:
|
||||
|
||||
```bash
|
||||
# Build and start all services
|
||||
docker-compose up -d --build
|
||||
|
||||
# Run database migrations
|
||||
docker-compose exec web npx prisma migrate deploy
|
||||
|
||||
# (Optional) Seed the database
|
||||
docker-compose exec web npm run db:seed
|
||||
```
|
||||
|
||||
Access:
|
||||
- **Application**: http://localhost:3050
|
||||
- **Database**: localhost:5432
|
||||
- **Redis**: localhost:6379
|
||||
- **Adminer (DB UI)**: http://localhost:8080 (only with --profile dev)
|
||||
|
||||
To include Adminer in production mode:
|
||||
```bash
|
||||
docker-compose --profile dev up -d
|
||||
```
|
||||
|
||||
## 📦 Services
|
||||
|
||||
### PostgreSQL (db)
|
||||
- **Image**: postgres:16-alpine
|
||||
- **Port**: 5432
|
||||
- **Database**: qrmaster
|
||||
- **User**: postgres
|
||||
- **Password**: postgres (change in production!)
|
||||
|
||||
### Redis (redis)
|
||||
- **Image**: redis:7-alpine
|
||||
- **Port**: 6379
|
||||
- **Max Memory**: 256MB with LRU eviction policy
|
||||
- **Persistence**: AOF enabled
|
||||
|
||||
### Next.js Application (web)
|
||||
- **Port**: 3050
|
||||
- **Environment**: Production
|
||||
- **Health Check**: HTTP GET on localhost:3050
|
||||
|
||||
### Adminer (adminer)
|
||||
- **Image**: adminer:latest
|
||||
- **Port**: 8080
|
||||
- **Purpose**: Database management UI
|
||||
- **Profile**: dev (optional in production)
|
||||
|
||||
## 🗄️ Database Management
|
||||
|
||||
### Migrations
|
||||
|
||||
```bash
|
||||
# Create a new migration
|
||||
npm run db:migrate
|
||||
|
||||
# Deploy migrations in Docker
|
||||
docker-compose exec web npx prisma migrate deploy
|
||||
|
||||
# Reset database (caution!)
|
||||
docker-compose exec web npx prisma migrate reset
|
||||
```
|
||||
|
||||
### Prisma Studio
|
||||
|
||||
```bash
|
||||
# On host machine
|
||||
npm run db:studio
|
||||
|
||||
# Or in Docker
|
||||
docker-compose exec web npx prisma studio
|
||||
```
|
||||
|
||||
### Backup and Restore
|
||||
|
||||
```bash
|
||||
# Backup
|
||||
docker-compose exec db pg_dump -U postgres qrmaster > backup.sql
|
||||
|
||||
# Restore
|
||||
docker-compose exec -T db psql -U postgres qrmaster < backup.sql
|
||||
```
|
||||
|
||||
## 🔧 Useful Commands
|
||||
|
||||
### View Logs
|
||||
|
||||
```bash
|
||||
# All services
|
||||
docker-compose logs -f
|
||||
|
||||
# Specific service
|
||||
docker-compose logs -f web
|
||||
docker-compose logs -f db
|
||||
docker-compose logs -f redis
|
||||
```
|
||||
|
||||
### Shell Access
|
||||
|
||||
```bash
|
||||
# Next.js container
|
||||
docker-compose exec web sh
|
||||
|
||||
# PostgreSQL container
|
||||
docker-compose exec db psql -U postgres -d qrmaster
|
||||
|
||||
# Redis container
|
||||
docker-compose exec redis redis-cli
|
||||
```
|
||||
|
||||
### Stop and Clean
|
||||
|
||||
```bash
|
||||
# Stop all services
|
||||
docker-compose down
|
||||
|
||||
# Stop and remove volumes (deletes data!)
|
||||
docker-compose down -v
|
||||
|
||||
# Stop and remove everything including images
|
||||
docker-compose down -v --rmi all
|
||||
```
|
||||
|
||||
## 🔐 Environment Variables
|
||||
|
||||
Create a `.env` file in the root directory (copy from `env.example`):
|
||||
|
||||
```bash
|
||||
cp env.example .env
|
||||
```
|
||||
|
||||
Required variables:
|
||||
- `DATABASE_URL`: PostgreSQL connection string
|
||||
- `NEXTAUTH_SECRET`: Secret for NextAuth.js
|
||||
- `NEXTAUTH_URL`: Application URL
|
||||
- `IP_SALT`: Salt for hashing IP addresses
|
||||
- `REDIS_URL`: Redis connection string
|
||||
|
||||
## 🌐 Network Architecture
|
||||
|
||||
All services run on a custom bridge network `qrmaster-network` which allows:
|
||||
- Service discovery by container name
|
||||
- Network isolation from other Docker projects
|
||||
- Internal DNS resolution
|
||||
|
||||
## 📊 Volumes
|
||||
|
||||
### Persistent Data
|
||||
- `dbdata`: PostgreSQL data
|
||||
- `redisdata`: Redis data
|
||||
|
||||
### Volume Management
|
||||
|
||||
```bash
|
||||
# List volumes
|
||||
docker volume ls
|
||||
|
||||
# Inspect volume
|
||||
docker volume inspect qrmaster_dbdata
|
||||
|
||||
# Remove all unused volumes
|
||||
docker volume prune
|
||||
```
|
||||
|
||||
## 🐛 Troubleshooting
|
||||
|
||||
### Database Connection Issues
|
||||
|
||||
```bash
|
||||
# Check if database is ready
|
||||
docker-compose exec db pg_isready -U postgres
|
||||
|
||||
# Check database logs
|
||||
docker-compose logs db
|
||||
|
||||
# Restart database
|
||||
docker-compose restart db
|
||||
```
|
||||
|
||||
### Application Won't Start
|
||||
|
||||
```bash
|
||||
# Check health status
|
||||
docker-compose ps
|
||||
|
||||
# View application logs
|
||||
docker-compose logs web
|
||||
|
||||
# Rebuild the application
|
||||
docker-compose up -d --build web
|
||||
```
|
||||
|
||||
### Port Already in Use
|
||||
|
||||
If ports 3050, 5432, 6379, or 8080 are already in use:
|
||||
|
||||
```bash
|
||||
# Find process using port
|
||||
# Windows
|
||||
netstat -ano | findstr :3050
|
||||
|
||||
# Linux/Mac
|
||||
lsof -i :3050
|
||||
|
||||
# Kill process or change port in docker-compose.yml
|
||||
```
|
||||
|
||||
## 🔄 Updates and Maintenance
|
||||
|
||||
### Update Dependencies
|
||||
|
||||
```bash
|
||||
# Update Node packages
|
||||
npm update
|
||||
|
||||
# Rebuild Docker images
|
||||
docker-compose build --no-cache
|
||||
```
|
||||
|
||||
### Update Docker Images
|
||||
|
||||
```bash
|
||||
# Pull latest images
|
||||
docker-compose pull
|
||||
|
||||
# Restart with new images
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
## 📝 Notes
|
||||
|
||||
- **Development**: Use `docker-compose.dev.yml` to run only the database and Redis
|
||||
- **Production**: Use `docker-compose.yml` to run the full stack
|
||||
- **Security**: Always change default passwords in production
|
||||
- **Backups**: Implement regular database backups in production
|
||||
- **Scaling**: For production, consider using PostgreSQL replication and Redis Sentinel
|
||||
|
||||
## 🆘 Support
|
||||
|
||||
For more information, see:
|
||||
- [Docker Documentation](https://docs.docker.com/)
|
||||
- [PostgreSQL Documentation](https://www.postgresql.org/docs/)
|
||||
- [Prisma Documentation](https://www.prisma.io/docs/)
|
||||
- [Next.js Documentation](https://nextjs.org/docs)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user