Features: - User registration and authentication with email/password - Admin login with username-based authentication (separate from regular users) - Review system for contractors to rate clients - Star rating system with review forms - Client identification with private data protection - Contractor registration with document verification - Admin dashboard for review management - Contact form (demo, non-functional) - Responsive navigation with DaisyUI components - Docker Compose setup for production deployment - PostgreSQL database with Ecto migrations - High Vis color scheme (dark background with safety orange/green) Admin credentials: username: admin, password: admin123 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
2.7 KiB
2.7 KiB
RateMyClient - Docker Setup
This guide will help you run the RateMyClient Phoenix application using Docker Compose.
Prerequisites
- Docker Desktop installed and running
- Docker Compose (included with Docker Desktop)
Quick Start
-
Build and start the containers:
docker-compose up --buildThis will:
- Build the Phoenix application Docker image
- Start PostgreSQL database
- Create the database
- Run migrations
- Create an admin user
- Start the Phoenix server
-
Access the application:
Open your browser and navigate to: http://localhost:4000
Default Admin Credentials
- Username:
admin - Password:
admin123 - Admin Login: http://localhost:4000/admin/login
Useful Commands
Start containers (detached mode)
docker-compose up -d
Stop containers
docker-compose down
View logs
docker-compose logs -f web
Rebuild after code changes
docker-compose up --build
Access the Phoenix console
docker-compose exec web bin/my_first_elixir_vibe_code remote
Run migrations manually
docker-compose exec web bin/my_first_elixir_vibe_code eval "MyFirstElixirVibeCode.Release.migrate()"
Access PostgreSQL
docker-compose exec db psql -U postgres -d my_first_elixir_vibe_code_dev
Volumes
The application uses a persistent volume for PostgreSQL data:
postgres_data: Stores database data
To completely reset the database:
docker-compose down -v
docker-compose up --build
Environment Variables
You can customize the application by modifying the environment variables in docker-compose.yml:
DATABASE_URL: PostgreSQL connection stringSECRET_KEY_BASE: Secret key for Phoenix (generate withmix phx.gen.secret)PHX_HOST: Hostname for the applicationPORT: Port to run the application on
Troubleshooting
Port already in use
If port 4000 is already in use, change the port mapping in docker-compose.yml:
ports:
- "8080:4000" # Access via http://localhost:8080
Database connection issues
Make sure the database container is healthy:
docker-compose ps
Clean rebuild
docker-compose down -v
docker system prune -a
docker-compose up --build
Production Notes
This Docker setup is configured for production use. For actual production deployment:
- Change the
SECRET_KEY_BASEto a new secure value - Update database credentials in
docker-compose.yml - Consider using environment files (.env) instead of hardcoded values
- Set up SSL/TLS termination (nginx, traefik, etc.)
- Configure proper backup strategies for the database