Setup¶
Development Environment¶
Prerequisites¶
Hunter 2 requires the following minimum versions to build:
Dependency |
Version |
---|---|
Docker Engine |
20.10 |
Docker Compose |
2.0 |
We need to export some variables to enable the build features we are using:
export COMPOSE_DOCKER_CLI_BUILD=1
export DOCKER_BUILDKIT=1
Build and Launch the Application¶
Start from within a clone of the repository.
Link the development compose file:
ln -s docker-compose.dev.yml docker-compose.yml
This environment maps the local repo into the container and will dynamically reload code changes.
You will need to configure some hosts file entries, as the app uses DNS information to route to different events:
echo 127.0.0.1 hunter2.local www.hunter2.local dev.hunter2.local >> /etc/hosts
dev.hunter2.local
is the default event subdomain. If you are working with more events, add more names here.
The quickest way to build and launch is:
make run
This can always be used to build any out of date images and restart everything that needs restarting. You can always use Docker Compose directly:
docker compose build
docker compose up -d
To create the database tables and base objects run the following:
docker compose run --rm app migrate_schemas
docker compose run --rm app setupsite
docker compose run --rm app createsuperuser
docker compose run --rm app createevent
Production Environment¶
Link the production compose file:
ln -s docker-compose.prod.yml docker-compose.yml
Production environments require configuration of passwords for database users. Add the following to your .env
file:
POSTGRES_PASSWORD=<password for DB superuser>
H2_DATABASE_PASSWORD=<password for hunter2 DB user>
H2_DB_EXPORTER_PASSWORD=<password for metrics exporter DB user>
You can generate random credentials for both these users with something like
echo "POSTGRES_PASSWORD=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 99 | head -n 1)" >> .env
echo "H2_DATABASE_PASSWORD=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 99 | head -n 1)" >> .env
echo "H2_DB_EXPORTER_PASSWORD=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 99 | head -n 1)" >> .env
Launch the containers and configure the database tables:
docker compose up -d
docker compose run --rm --entrypoint "/opt/hunter2/venv/bin/python manage.py" app migrate_schemas
You can now remove the POSTGRES_PASSWORD
from your .env
file and store it safely for future use.
To create the base objects run the following:
docker compose run --rm --entrypoint "/opt/hunter2/venv/bin/python manage.py" app setupsite
docker compose run --rm --entrypoint "/opt/hunter2/venv/bin/python manage.py" app createsuperuser
docker compose run --rm --entrypoint "/opt/hunter2/venv/bin/python manage.py" app createevent