The Blackjack API can be run using Docker Compose for the quickest setup, or installed locally for development purposes. This guide covers both approaches.
# Start all services in detached modedocker compose up -d# Check service statusdocker compose ps# View logs from all servicesdocker compose logs -f# View logs from a specific servicedocker compose logs -f api
# Using Homebrew (macOS)brew install mongodb-community@7brew services start mongodb-community# Or using Dockerdocker run -d -p 27017:27017 --name blackjack-mongo mongo:7
MySQL:
# Using Homebrew (macOS)brew install[email protected]brew services start mysqlmysql -u root -e "CREATE DATABASE blackjack;"mysql -u root -e "CREATE USER 'blackjack'@'localhost' IDENTIFIED BY 'blackjack';"mysql -u root -e "GRANT ALL ON blackjack.* TO 'blackjack'@'localhost';"# Or using Dockerdocker run -d -p 3307:3306 \ -e MYSQL_ROOT_PASSWORD=root \ -e MYSQL_DATABASE=blackjack \ -e MYSQL_USER=blackjack \ -e MYSQL_PASSWORD=blackjack \ --name blackjack-mysql mysql:8.0
# Build the project./mvnw clean install# Run the application./mvnw spring-boot:run# Or run with a specific profile./mvnw spring-boot:run -Dspring-boot.run.profiles=local
The application will start on http://localhost:8080.
Host: localhost (or mysql in Docker)Port: 3307 (Docker) or 3306 (local)Database: blackjackUsername: blackjackPassword: blackjack
Database migrations are managed automatically by Flyway on application startup. The schema is created from SQL scripts in src/main/resources/db/migration/.
The application supports multiple Spring profiles:
Profile
Purpose
Database Hosts
local
Local development
localhost:3307, localhost:27017
docker
Docker Compose
mysql:3306, mongo:27017
prod
Production deployment
Configured via environment variables
Activate a profile:
# Via Maven./mvnw spring-boot:run -Dspring-boot.run.profiles=docker# Via environment variableexport SPRING_PROFILES_ACTIVE=docker./mvnw spring-boot:run# Via Dockerdocker run -e SPRING_PROFILES_ACTIVE=prod blackjack-api
# Check what's using port 8080lsof -i :8080# Kill the process or change the portdocker run -p 9090:8080 blackjack-api
Database connection failed
Ensure databases are running and healthy:
# Check Docker servicesdocker compose ps# Test MongoDB connectionmongosh mongodb://localhost:27017/blackjack# Test MySQL connectionmysql -h localhost -P 3307 -u blackjack -pblackjack blackjack
Flyway migration failed
If database migrations fail:
# Reset the databasedocker compose down -vdocker compose up -d# Or manually drop and recreatemysql -h localhost -P 3307 -u root -proot -e "DROP DATABASE IF EXISTS blackjack; CREATE DATABASE blackjack;"