The development environment runs in Docker containers and features hot-reload capabilities for Go code, and the project's dependencies (e.g. templates, translations, ...) using Air.
- Docker and Docker Compose installed (should come with Docker Desktop for Windows pre-installed!)
- Git (for cloning the repository)
- Navigate to the development docker directory:
cd docker/dev- Start the environment:
docker compose up --buildThe application will be available at http://localhost:8080. However, you'll still need DB migrations.
You'll also have to set up your authorization provider of choice, consult the config/auth.toml for this. Consider putting your overwrite in config/local/auth.toml so that it's not commited to the VCS by accident.
Migrations can be controlled via the RUN_MIGRATIONS environment variable in docker-compose.yml:
environment:
RUN_MIGRATIONS: true # or falseImportant Notes:
- This setting can only be changed in the
docker-compose.ymlfile - Setting it to
truewill run migrations on container startup - While migrations are versioned, keeping this enabled could lead to unexpected database changes when pulling new migrations from remote
- For controlled database updates, it's recommended to keep this
falseand run migrations manually when needed
# Start in detached mode (run in background)
docker compose up -d
# Force recreation of containers
docker compose up --force-recreate
# Rebuild containers and start
docker compose up --build
# Stop and remove containers
docker compose down
# View logs when running in detached mode
docker compose logs -f
# Common combinations
docker compose up -d --build # Rebuild and start in background
docker compose up --force-recreate --build # Full rebuild and restart- The entire project directory is mounted into the container
- Changes to Go files trigger automatic rebuilds via Air
- Application logs are visible in the Docker Compose output
- Database data persists across container restarts via Docker volumes
Remember to rebuild the containers (--build) when making changes to the Docker configuration files or when new
dependencies are added to the project.