Docker
Docker¶
Image¶
Docker Compose¶
Template:
services:
# ------------------------------------------------------------------------------
critter_server:
image: ghcr.io/eurofurence/crittersystem:latest
restart: unless-stopped
environment:
MYSQL_HOST: critter_database
MYSQL_USER: critter_user
MYSQL_PASSWORD: critter_password
MYSQL_DATABASE: critter_db
ports:
- '5080:80'
networks:
- database
- internet
depends_on:
- critter_database
# ------------------------------------------------------------------------------
critter_database:
image: mariadb:10.2
restart: unless-stopped
environment:
MYSQL_DATABASE: critter_db
MYSQL_USER: critter_user
MYSQL_PASSWORD: critter_password
MYSQL_RANDOM_ROOT_PASSWORD: 1
MYSQL_INITDB_SKIP_TZINFO: 'yes'
volumes:
- db:/var/lib/mysql
networks:
- database
# ------------------------------------------------------------------------------
volumes:
db: {}
networks:
database:
internal: true
internet:
Variables¶
| Variables | Docker ENV | Default Value |
|---|---|---|
| 'host' | 'MYSQL_HOST' | localhost |
| 'database' | 'MYSQL_DATABASE' | critterdb |
| 'username' | 'MYSQL_USER' | root |
| 'password' | 'MYSQL_PASSWORD' | empty |
| 'api_key' | 'API_KEY' | empty |
| 'maintenance' | 'MAINTENANCE' | false |
| 'app_name' | 'APP_NAME' | Critter System |
| 'environment' | 'ENVIRONMENT' | production |
| 'url' | 'APP_URL' | empty |
| 'faq.faq' | 'FAQ_URL' | /faq |
| 'Contact' | 'CONTACT_EMAIL' | mailto:critter@eurofurence.org |
| 'general.email' | 'CONTACT_EMAIL' | mailto:critter@eurofurence.org |
| 'faq_text' | 'FAQ_TEXT' | |
| 'documentation_url' | 'DOCUMENTATION_URL' | 'https://github.com/eurofurence/crittersystem/' |
| 'driver' | 'MAIL_DRIVER' | |
| 'address' | 'MAIL_FROM_ADDRESS' | noreply@example.com |
| 'name' | 'MAIL_FROM_NAME' | env 'APP_NAME' |
| 'host' | 'MAIL_HOST' | 'localhost' |
| 'port' | 'MAIL_PORT' | 587 |
| 'tls' | 'MAIL_TLS' | |
| 'username' | 'MAIL_USERNAME' | |
| 'password' | 'MAIL_PASSWORD' | |
| 'sendmail' | 'MAIL_SENDMAIL' | '/usr/sbin/sendmail -bs' |
| 'privacy_email' | 'PRIVACY_EMAIL' | |
| 'enable_email_goodie' | 'ENABLE_EMAIL_GOODIE' | false |
| 'setup_admin_password' | 'SETUP_ADMIN_PASSWORD' | |
| 'theme' | 'THEME' | 21 |
| 'home_site' | 'HOME_SITE' | 'news' |
| 'display_news' | 'DISPLAY_NEWS' | 10 |
| 'registration_enabled' | 'REGISTRATION_ENABLED' | true |
| 'external_registration_url' | 'EXTERNAL_REGISTRATION_URL' | |
| 'pronoun' | 'PRONOUN_REQUIRED' | false |
| 'firstname' | 'FIRSTNAME_REQUIRED' | false |
| 'lastname' | 'LASTNAME_REQUIRED' | false |
| 'tshirt_size' | 'TSHIRT_SIZE_REQUIRED' | true |
| 'mobile' | 'MOBILE_REQUIRED' | false |
| 'dect' | 'DECT_REQUIRED' | false |
| 'signup_requires_arrival' | 'SIGNUP_REQUIRES_ARRIVAL' | false |
| 'autoarrive' | 'AUTOARRIVE' | false |
| 'supporters_can_promote' | 'SUPPORTERS_CAN_PROMOTE' | false |
| 'signup_advance_hours' | 'SIGNUP_ADVANCE_HOURS' | 0 |
| 'signup_post_minutes' | 'SIGNUP_POST_MINUTES' | 0 |
| 'signup_post_fraction' | 'SIGNUP_POST_FRACTION' | 0 |
| 'last_unsubscribe' | 'LAST_UNSUBSCRIBE' | 3 |
| 'password_algorithm' | 'PASSWORD_ALGORITHM' | PASSWORD_DEFAULT |
| 'password_min_length' | 'PASSWORD_MIN_LENGTH' | 8 |
| 'enable_password' | 'ENABLE_PASSWORD' | true |
| 'enable_dect' | 'ENABLE_DECT' | true |
| 'enable_mobile_show' | 'ENABLE_MOBILE_SHOW' | false |
| 'username_regex' | 'USERNAME_REGEX' | '/([^\p{L}\p{N}_.-]+)/ui' |
| 'enable_full_name' | 'ENABLE_FULL_NAME' | false |
| 'display_full_name' | 'DISPLAY_FULL_NAME' | false |
| 'ENABLE_FULL_NAME' | false | |
| 'enable_pronoun' | 'ENABLE_PRONOUN' | true |
| 'enable_planned_arrival' | 'ENABLE_PLANNED_ARRIVAL' | true |
| 'enable_force_active' | 'ENABLE_FORCE_ACTIVE' | true |
| 'enable_self_worklog' | 'ENABLE_SELF_WORKLOG' | true |
| 'goodie_type' | 'GOODIE_TYPE' | 'goodie' |
| 'enable_voucher' | 'ENABLE_VOUCHER' | true |
| 'max_freeloadable_shifts' | 'MAX_FREELOADABLE_SHIFTS' | 2 |
| 'timezone' | 'TIMEZONE' | 'Europe/Berlin' |
| 'enabled' | 'NIGHT_SHIFTS' | true |
| 'start' | 'NIGHT_SHIFTS_START' | 2 |
| 'end' | 'NIGHT_SHIFTS_END' | 8 |
| 'multiplier' | 'NIGHT_SHIFTS_MULTIPLIER' | 2 |
| 'initial_vouchers' | 'INITIAL_VOUCHERS' | 0 |
| 'shifts_per_voucher' | 'SHIFTS_PER_VOUCHER' | 0 |
| 'hours_per_voucher' | 'HOURS_PER_VOUCHER' | 2 |
| 'voucher_start' | 'VOUCHER_START' ?: null, | |
| 'driving_license_enabled' | 'DRIVING_LICENSE_ENABLED' | true |
| 'ifsg_enabled' | 'IFSG_ENABLED' | false |
| 'ifsg_light_enabled' | 'IFSG_LIGHT_ENABLED' | false |
| 'default_locale' | 'DEFAULT_LOCALE' | 'en_US' |
| 'tshirt_link' | 'TSHIRT_LINK' | |
| 'enable_day_of_event' | 'ENABLE_DAY_OF_EVENT' | false |
| 'event_has_day0' | 'EVENT_HAS_DAY0' | true |
| 'filter_max_duration' | 'FILTER_MAX_DURATION' | 0 |
| 'driver' | 'SESSION_DRIVER' | 'pdo' |
| 'name' | 'SESSION_NAME' | 'session' |
| 'lifetime' | 'SESSION_LIFETIME' | 30 |
| 'trusted_proxies' | 'TRUSTED_PROXIES' | ['127.0.0.0/8', '::ffff:127.0.0.0/8', '::1/128'] |
| 'add_headers' | 'ADD_HEADERS' | true |