Configuration
This page describes how to configure:
- The Flask user/team registration webapp
- The Docker Compose project
These configurations are two seperate files, both of which need to be created in order for this suite to run properly. This page has sample/starter examples for both configurations, which you can copy into your files for development and/or deployment.
IMPORTANT
The .env file does not interact with the Flask configurations and need to be configured separately.
Docker Compose and .env
The Compose config defines services for the project including:
- Databases
- Registration Webapp
- Domjudge Server
- Judgehosts
Services are configured with their own volumes, ports, dependencies, and environment variables. The project currently uses Compose file version 2, whose docs can be found here.
We use the .env file to define several variables which control the Compose configuration. Environmental variables from the .env file are interpolated into the docker-compose.yml using ${VAR} syntax.
Sample .env
COMPOSE_PROJECT_NAME=contest
DOM_PASS=abadpassword
Excerpt from docker-compose.yml
# Registration webapp service
domserver:
# ...
environment:
- DOMJUDGE_DB_HOST=domdb
- DOMJUDGE_DB_PASSWORD=${DOM_PASS}
- DOMJUDGE_DB_ROOT_PASSWORD=${DOM_PASS}
Output of docker-compose config
domserver:
# ...
environment:
DOMJUDGE_DB_HOST: domdb
DOMJUDGE_DB_PASSWORD: abadpassword
DOMJUDGE_DB_ROOT_PASSWORD: abadpassword
Flask Configuration
The webapp's config is handled via setting an environmental variable FLASK_CONFIG to a file path relative to the webapp module's __init__.py. By default, these configs are to be stored in the repo's /config folder. Below is a sample config, but you can find the recommened developer config stored in /config. For production config, please contact project maintainers.
# General dev config
DEBUG = True
# MongoDB
MONGODB_SETTINGS = {
'db': 'database', # name of the database in MongoDB
'host': 'localhost', # hostname of server
'port': 27017,
'username': 'username', # Database user
'password': 'password', # User's password
}
# ReCaptcha
RECAPTCHA_ENABLED = True
RECAPTCHA_SITE_KEY = '6LeyxBQUAAAAAHBpG2htNplW1qjcgODp47P6FHuE'
RECAPTCHA_SECRET_KEY = ''
# Email Config
MAIL_SERVER = 'mail.cs.fsu.edu'
MAIL_PORT = 587
MAIL_USE_TLS = True
MAIL_USE_SSL = False
MAIL_DEFAULT_SENDER = 'acm@cs.fsu.edu'
MAIL_USERNAME = '<ACM USERNAME>'
MAIL_PASSWORD = '<ACM PASSWORD>'