124 lines
2.7 KiB
Markdown
124 lines
2.7 KiB
Markdown
|
|
# 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
|
||
|
|
|
||
|
|
1. **Build and start the containers:**
|
||
|
|
|
||
|
|
```bash
|
||
|
|
docker-compose up --build
|
||
|
|
```
|
||
|
|
|
||
|
|
This will:
|
||
|
|
- Build the Phoenix application Docker image
|
||
|
|
- Start PostgreSQL database
|
||
|
|
- Create the database
|
||
|
|
- Run migrations
|
||
|
|
- Create an admin user
|
||
|
|
- Start the Phoenix server
|
||
|
|
|
||
|
|
2. **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)
|
||
|
|
```bash
|
||
|
|
docker-compose up -d
|
||
|
|
```
|
||
|
|
|
||
|
|
### Stop containers
|
||
|
|
```bash
|
||
|
|
docker-compose down
|
||
|
|
```
|
||
|
|
|
||
|
|
### View logs
|
||
|
|
```bash
|
||
|
|
docker-compose logs -f web
|
||
|
|
```
|
||
|
|
|
||
|
|
### Rebuild after code changes
|
||
|
|
```bash
|
||
|
|
docker-compose up --build
|
||
|
|
```
|
||
|
|
|
||
|
|
### Access the Phoenix console
|
||
|
|
```bash
|
||
|
|
docker-compose exec web bin/my_first_elixir_vibe_code remote
|
||
|
|
```
|
||
|
|
|
||
|
|
### Run migrations manually
|
||
|
|
```bash
|
||
|
|
docker-compose exec web bin/my_first_elixir_vibe_code eval "MyFirstElixirVibeCode.Release.migrate()"
|
||
|
|
```
|
||
|
|
|
||
|
|
### Access PostgreSQL
|
||
|
|
```bash
|
||
|
|
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:
|
||
|
|
```bash
|
||
|
|
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 string
|
||
|
|
- `SECRET_KEY_BASE`: Secret key for Phoenix (generate with `mix phx.gen.secret`)
|
||
|
|
- `PHX_HOST`: Hostname for the application
|
||
|
|
- `PORT`: 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`:
|
||
|
|
```yaml
|
||
|
|
ports:
|
||
|
|
- "8080:4000" # Access via http://localhost:8080
|
||
|
|
```
|
||
|
|
|
||
|
|
### Database connection issues
|
||
|
|
Make sure the database container is healthy:
|
||
|
|
```bash
|
||
|
|
docker-compose ps
|
||
|
|
```
|
||
|
|
|
||
|
|
### Clean rebuild
|
||
|
|
```bash
|
||
|
|
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:
|
||
|
|
|
||
|
|
1. Change the `SECRET_KEY_BASE` to a new secure value
|
||
|
|
2. Update database credentials in `docker-compose.yml`
|
||
|
|
3. Consider using environment files (.env) instead of hardcoded values
|
||
|
|
4. Set up SSL/TLS termination (nginx, traefik, etc.)
|
||
|
|
5. Configure proper backup strategies for the database
|