Variables
Vortex uses environment variables to configure scripts without the need to change the code to alter behavior.
There are two main types of variables:
Project Configuration Variables are set once during project setup and
remain constant throughout the project lifecycle. These are typically
configured in the .env file, or within the CI or hosting provider
environments.
Runtime Variables can be changed during the project lifecycle to alter script behavior. For example, changing how deployment behaves or skipping a certain code branch deployment within CI.
.env and .env.local files
Only required variables are listed in .env to keep it concise. There are
more optional variables set in scripts with sensible defaults. These are
documented below - add them to your .env file as needed to override
the defaults.
The .env.local file is intended to store local overrides and sensitive
information like passwords and API keys. This file is ignored by Git
and should not be committed to the repository. It is a good practice to
store local overrides and sensitive information in .env.local to keep them
separate from the main .env file.
Override order (bottom values win)
- default value in container taken from image
- default value in
docker-compose.yml - value in
.env(last value wins) - value in
.env.local(last value wins) - value from environment
Naming conventions
All variables used by Vortex scripts start with the VORTEX_ prefix to
differentiate them from other environment variables.
All Drupal-specific environment variables start with the DRUPAL_ prefix.
Any other third-party service variables (like COMPOSER_TOKEN or NEWRELIC_API_KEY)
are used as-is.
Default values
All required variables used by Vortex scripts have checks in place to ensure they are set before proceeding. If a required variable is missing, the script will fail with a clear error message.
All optional variables used by Vortex scripts have default values defined within the scripts. This ensures that scripts can run out-of-the-box without requiring extensive configuration.
Variables without values provided or set in scripts are considered defects in the template implementation and should be reported. This is because in Shell scripts not having a value or having an empty value may lead to unexpected behavior in when these values are evaluated in conditions. Moreover, having empty or unset values do not allow to have a reliable multi-level override mechanism for variables.
For example, a variable can have a default value in the script, be overridden in
the .env file, and further overridden in the CI/hosting for all environments,
and then additionally overridden for a specific environment.
Boolean variables
Boolean variables use 1 for true and 0 for false values to ensure consistency
across different environments.
We do not use true/false, yes/no, or other variations to make value
truly cross-platform (some systems may interpret true and false differently).
Variables list
The list below is automatically generated with Shellvar from all Shell scripts.
| Name | Description | Default value | Defined or used in |
|---|---|---|---|
AHOY_CONFIRM_RESPONSE | Set to y to suppress Ahoy prompts. | UNDEFINED | .env.local.example |
AHOY_CONFIRM_WAIT_SKIP | When Ahoy prompts are suppressed ($AHOY_CONFIRM_RESPONSE is 1), the command will wait for 3 seconds before proceeding. Set this variable to "1" to skip the wait. | 1 | .env.local.example |
COMPOSE_PROJECT_NAME | Docker Compose project name. Sets the project name for a Docker Compose project. Influences container and network names. Defaults to the name of the project directory. | UNDEFINED | ENVIRONMENT |
DATABASE_CHARSET | Local database charset. Variable is not used in hosting environment. | utf8mb4 | docker-compose.yml |
DATABASE_COLLATION | Local database collation. Variable is not used in hosting environment. | utf8mb4_general_ci | docker-compose.yml |
DATABASE_DATABASE | Database name. | UNDEFINED | LAGOON ENVIRONMENT |
DATABASE_HOST | Local database host. Variable is not used in hosting environment. | database | docker-compose.yml |
DATABASE_NAME | Local database name. Variable is not used in hosting environment. | drupal | docker-compose.yml |
DATABASE_PASSWORD | Local database password. Variable is not used in hosting environment. | drupal | docker-compose.yml |
DATABASE_PORT | Local database port. Variable is not used in hosting environment. | 3306 | docker-compose.yml |
DATABASE_USERNAME | Local database user. Variable is not used in hosting environment. | drupal | docker-compose.yml |
DRUPAL_ADMIN_EMAIL | Drupal admin email. May need to be reset if database was sanitized. | UNDEFINED | .env |
DRUPAL_CLAMAV_ENABLED | Enable ClamAV integration. | 1 | .env |
DRUPAL_CLAMAV_MODE | ClamAV mode. Run ClamAV in either daemon mode by setting it to 0 (or 'daemon') or in executable mode by setting it to 1. | daemon | .env |
DRUPAL_CONFIG_PATH | Drupal configuration directory. Path from the web root directory to the configuration directory. If not set, the default location is inside a randomly-named directory in the public files path. | ../config/default | .env |
DRUPAL_ENVIRONMENT | Override detected Drupal environment type. Used in the application to override the automatically detected environment type. | UNDEFINED | ENVIRONMENT |
DRUPAL_HASH_SALT | Drupal hash salt. Secures one-time login links, password-reset URLs, and CSRF/form tokens. Set a long, random, unique value for every hosted environment as a platform variable or secret. If not set, a fallback is derived from the database host, which is suitable for local and CI use only. @see https://www.vortextemplate.com/docs/drupal/settings | <generated from database host> | ENVIRONMENT |
DRUPAL_MAINTENANCE_THEME | Drupal maintenance theme name. | your_site_theme | .env |
DRUPAL_MIGRATION_FEEDBACK | Feedback frequency for migration progress. | 50 | scripts/provision-20-migration.sh |
DRUPAL_MIGRATION_IMPORT_LIMIT | Limit the number of entities to import. Set to 'all' to import all. | 50 | scripts/provision-20-migration.sh |
DRUPAL_MIGRATION_ROLLBACK_SKIP | Skip rollback of migrations before import. | 1 | scripts/provision-20-migration.sh |
DRUPAL_MIGRATION_SKIP | Skip all migrations. | 0 | scripts/provision-20-migration.sh |
DRUPAL_MIGRATION_SOURCE_DB_IMPORT | Import migration source database. Set to 1 to import, 0 to skip. | 0 | scripts/provision-20-migration.sh |
DRUPAL_MIGRATION_SOURCE_DB_PROBE_TABLE | Table name to probe in the source database to verify it is not corrupted. | categories | scripts/provision-20-migration.sh |
DRUPAL_MIGRATION_UPDATE | Update already imported entities during migration. | 0 | scripts/provision-20-migration.sh |
DRUPAL_PRIVATE_FILES | Path to private files. | ${DRUPAL_PUBLIC_FILES}/private | docker-compose.yml |
DRUPAL_PROFILE | Drupal profile name. | standard | .env |
DRUPAL_PUBLIC_FILES | Path to public files. | ./${WEBROOT}/sites/default/files | docker-compose.yml |
DRUPAL_REDIS_ENABLED | Enable Redis integration. See settings.redis.php for details. | 1 | .env |
DRUPAL_SHIELD_PRINT | Shield message. | Restricted access. | .env |
DRUPAL_SITE_EMAIL | Drupal site email. Used only when installing from profile. | webmaster@your-site-domain.example | .env |
DRUPAL_SITE_NAME | Drupal site name. Used only when installing from profile. | ${VORTEX_PROJECT} | .env |
DRUPAL_STAGE_FILE_PROXY_ORIGIN | Stage file proxy origin. If using Shield, the HTTP authentication credentials will be automatically added to the origin URL. | https://www.your-site-domain.example | .env |
DRUPAL_TEMPORARY_FILES | Path to temporary files. | ${DRUPAL_PRIVATE_FILES}/tmp | docker-compose.yml |
DRUPAL_THEME | Drupal theme name. | your_site_theme | .env |
DRUPAL_TRUSTED_HOSTS | Trusted host patterns. Comma-separated list of domains for trusted host patterns. These domains will be added to the trusted host patterns alongside any other routes defined by the hosting provider. | your-site-domain.example,www.your-site-domain.example | .env |
LAGOON_PROJECT | Lagoon project name. May be different from $VORTEX_PROJECT.Update drush/sites/lagoon.site.yml if you update this value. | your_site | .env |
NEWRELIC_ENABLED | Enable New Relic in Lagoon environment. Set as project-wide variable. | UNDEFINED | LAGOON ENVIRONMENT |
NEWRELIC_LICENSE | New Relic license. Set as project-wide variable. | UNDEFINED | LAGOON ENVIRONMENT |
PACKAGE_TOKEN | GitHub token used to overcome API rate limits or access private repositories. @see https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token | UNDEFINED | .env.local.example, scripts/vortex-tooling.sh |
RENOVATE_DEPENDENCY_DASHBOARD | Whether to enable self-hosted Renovate bot dashboard. | false | CI config |
RENOVATE_DRY_RUN | Whether to allow self-hosted Renovate bot make changes to the repository. | false | CI config |
RENOVATE_GIT_AUTHOR | Commit author for self-hosted Renovate bot. | 'Renovate Self Hosted <renovatebot@your-site-domain.example>' | CI config |
RENOVATE_REPOSITORIES | Renovate repositories to manage. Set as "organization/repository". | UNDEFINED | CI config |
RENOVATE_TOKEN | Self-hosted Renovate bot token. Create a GitHub token with a permission to write to a repository. | UNDEFINED | CI config |
TZ | The timezone used within the containers. | UTC | .env |
VORTEX_ACQUIA_APP_NAME | Acquia application name. | UNDEFINED | .env |
VORTEX_ACQUIA_KEY | Acquia Cloud API key. | UNDEFINED | .env.local.example |
VORTEX_ACQUIA_SECRET | Acquia Cloud API secret. | UNDEFINED | .env.local.example |
VORTEX_CI_ARTIFACTS | Directory to store test artifacts in CI. | /tmp/artifacts | CI config |
VORTEX_CI_BEHAT_IGNORE_FAILURE | Ignore Behat test failures. | UNDEFINED | CI config |
VORTEX_CI_BEHAT_PROFILE | Test Behat profile to use in CI. If not set, the default profile will be used. | UNDEFINED | CI config |
VORTEX_CI_CODE_COVERAGE_PR_COMMENT_SKIP | Skip posting code coverage report as a PR comment. | UNDEFINED | CI config |
VORTEX_CI_CODE_COVERAGE_THRESHOLD | Code coverage threshold percentage. Build fails if coverage is below this value. | 90 | CI config |
VORTEX_CI_COMPOSER_AUDIT_IGNORE_FAILURE | Ignore composer audit failures. | UNDEFINED | CI config |
VORTEX_CI_COMPOSER_NORMALIZE_IGNORE_FAILURE | Ignore composer normalize failures. | UNDEFINED | CI config |
VORTEX_CI_COMPOSER_VALIDATE_IGNORE_FAILURE | Ignore composer validate failures. | UNDEFINED | CI config |
VORTEX_CI_DCLINT_IGNORE_FAILURE | Ignore DCLint failures. | UNDEFINED | CI config |
VORTEX_CI_GHERKIN_LINT_IGNORE_FAILURE | Ignore Gherkin Lint failures. | UNDEFINED | CI config |
VORTEX_CI_HADOLINT_IGNORE_FAILURE | Ignore Hadolint failures. | UNDEFINED | CI config |
VORTEX_CI_JEST_IGNORE_FAILURE | Ignore Jest test failures. | UNDEFINED | CI config |
VORTEX_CI_NODEJS_LINT_IGNORE_FAILURE | Ignore NodeJS linters failures. | UNDEFINED | CI config |
VORTEX_CI_PHPCS_IGNORE_FAILURE | Ignore PHPCS failures. | UNDEFINED | CI config |
VORTEX_CI_PHPMD_IGNORE_FAILURE | Ignore PHPMD failures. | UNDEFINED | CI config |
VORTEX_CI_PHPSTAN_IGNORE_FAILURE | Ignore PHPStan failures. | UNDEFINED | CI config |
VORTEX_CI_PHPUNIT_IGNORE_FAILURE | Ignore PHPUnit test failures. | UNDEFINED | CI config |
VORTEX_CI_RECTOR_IGNORE_FAILURE | Ignore Rector failures. | UNDEFINED | CI config |
VORTEX_CI_TEST_RESULTS | Directory to store test results in CI. | /tmp/tests | CI config |
VORTEX_CI_TWIG_CS_FIXER_IGNORE_FAILURE | Ignore Twig CS Fixer failures. | UNDEFINED | CI config |
VORTEX_CONTAINER_REGISTRY | Container registry name. Provide port, if required as <server_name>:<port>. | docker.io | .env |
VORTEX_CONTAINER_REGISTRY_PASS | The password (token) to log into the container registry. | UNDEFINED | .env.local.example |
VORTEX_CONTAINER_REGISTRY_USER | The username to log into the container registry. | UNDEFINED | .env.local.example |
VORTEX_DB_DIR | Database dump directory. The directory is used to store the database dump files for import and export. | ./.data | .env, scripts/provision-20-migration.sh |
VORTEX_DB_FILE | Database dump file name. The file is used to import the database into an empty database container. | db.sql | .env |
VORTEX_DB_IMAGE | Name of the database container image to use. See https://github.com/drevops/mariadb-drupal-data to seed your DB image. | UNDEFINED | .env |
VORTEX_DB_IMAGE_BASE | Name of the database fall-back container image to use. If the image specified in $VORTEX_DB_IMAGE does not exist and base image was provided - it will be used as a "clean slate" for the database. | UNDEFINED | .env |
VORTEX_DEBUG | Set to 1 to print debug information in Vortex scripts. | UNDEFINED | .env.local.example |
VORTEX_DEPLOY_ALLOW_LABEL | Label that authorizes a pull request deployment. When set, a PR is deployed only if it carries this label. | UNDEFINED | CI config |
VORTEX_DEPLOY_ALLOW_SKIP | Flag to allow skipping of a deployment using additional flags. | UNDEFINED | CI config |
VORTEX_DEPLOY_SKIP | Skip all deployments. | UNDEFINED | CI config |
VORTEX_DEPLOY_SKIP_BRANCHES | Branch names to skip deployment for (single value or comma-separated list). | UNDEFINED | CI config |
VORTEX_DEPLOY_SKIP_PRS | Pull request numbers to skip deployment for (single value or comma-separated list). | UNDEFINED | CI config |
VORTEX_DEPLOY_TYPES | Deployment occurs when tests pass in the CI environment. @see https://www.vortextemplate.com/docs/deployment | artifact | .env |
VORTEX_DOWNLOAD_DB2_ACQUIA_DB_NAME | Acquia database name to download the second database from. | your_site | .env |
VORTEX_DOWNLOAD_DB2_ENVIRONMENT | Environment to download the second database from. Applies to hosting environments. | prod | .env |
VORTEX_DOWNLOAD_DB2_FILE | Second database dump file name. | db2.sql | .env, scripts/provision-20-migration.sh |
VORTEX_DOWNLOAD_DB2_FTP_FILE | Second database dump FTP file name. | db2.sql | .env |
VORTEX_DOWNLOAD_DB2_FTP_HOST | Second database dump FTP host. | UNDEFINED | .env |
VORTEX_DOWNLOAD_DB2_FTP_PORT | Second database dump FTP port. | 21 | .env |
VORTEX_DOWNLOAD_DB2_S3_BUCKET | AWS S3 bucket name for second database download. | UNDEFINED | .env |
VORTEX_DOWNLOAD_DB2_S3_REGION | AWS S3 region. | ap-southeast-2 | .env |
VORTEX_DOWNLOAD_DB2_SOURCE | Second database download source. | url | .env |
VORTEX_DOWNLOAD_DB2_URL | Second database dump file sourced from a URL. HTTP Basic Authentication credentials should be embedded into the value. | UNDEFINED | .env |
VORTEX_DOWNLOAD_DB_ACQUIA_DB_NAME | Acquia database name to download the database from. | your_site | .env |
VORTEX_DOWNLOAD_DB_ENVIRONMENT | Environment to download the database from. Applies to hosting environments. Note that depending on the hosting provider, this variable may represent a branch name or an environment name. | prod | .env |
VORTEX_DOWNLOAD_DB_FORCE | Always override existing downloaded DB dump. | 1 | .env.local.example |
VORTEX_DOWNLOAD_DB_FTP_FILE | Database dump FTP file name. | db.sql | .env |
VORTEX_DOWNLOAD_DB_FTP_HOST | Database dump FTP host. | UNDEFINED | .env |
VORTEX_DOWNLOAD_DB_FTP_PASS | Database dump FTP password. | UNDEFINED | .env.local.example |
VORTEX_DOWNLOAD_DB_FTP_PORT | Database dump FTP port. | 21 | .env |
VORTEX_DOWNLOAD_DB_FTP_USER | Database dump FTP user. | UNDEFINED | .env.local.example |
VORTEX_DOWNLOAD_DB_S3_ACCESS_KEY | AWS access key for S3 database download. | UNDEFINED | .env.local.example |
VORTEX_DOWNLOAD_DB_S3_BUCKET | AWS S3 bucket name for database download. | UNDEFINED | .env |
VORTEX_DOWNLOAD_DB_S3_REGION | AWS S3 region. | ap-southeast-2 | .env |
VORTEX_DOWNLOAD_DB_S3_SECRET_KEY | AWS secret key for S3 database download. | UNDEFINED | .env.local.example |
VORTEX_DOWNLOAD_DB_SOURCE | Database download source. | url | .env |
VORTEX_DOWNLOAD_DB_URL | Database dump file sourced from a URL. HTTP Basic Authentication credentials should be embedded into the value. | UNDEFINED | .env |
VORTEX_EXPORT_DB_CONTAINER_REGISTRY_DEPLOY_PROCEED | Proceed with container image deployment after it was exported. | UNDEFINED | CI config |
VORTEX_FRONTEND_BUILD_SKIP | Skip building of the frontend. | UNDEFINED | .env |
VORTEX_LAGOON_AMAZEEIO_REGION | amazee.io region for the Lagoon internal-route trusted host pattern. Set to your amazee.io region code (for example, "au" or "us"), or leave it empty if the project does not run on amazee.io. | au | .env |
VORTEX_LAGOON_PRODUCTION_BRANCH | Dedicated branch to identify the production environment. | main | .env |
VORTEX_LOCALDEV_URL | Local development URL. Based on the $COMPOSE_PROJECT_NAME environment variable, which is set by Docker Compose to the name of the project directory.Override only if you need to use a different URL than the default. | example-site.docker.amazee.io | .env.local.example |
VORTEX_NOTIFY_CHANNELS | The channels of the notifications. A combination of comma-separated values: email,slack,newrelic,github,jira,webhook,diffy | email | .env |
VORTEX_NOTIFY_EMAIL_FROM | An email address to send notifications from. Applies to email notifications. | webmaster@your-site-domain.example | .env |
VORTEX_NOTIFY_EMAIL_RECIPIENTS | Email address(es) to send notifications to. Applies to email notifications. Multiple names can be specified as a comma-separated list of email addresses with optional names in the format "email | name". Example: "to1@example.com | Jane Doe, to2@example.com |
VORTEX_NOTIFY_GITHUB_TOKEN | GitHub token. @see https://www.vortextemplate.com/docs/deployment/notifications#github | UNDEFINED | ACQUIA ENVIRONMENT, LAGOON ENVIRONMENT |
VORTEX_NOTIFY_JIRA_TOKEN | JIRA API token. @see https://www.vortextemplate.com/docs/deployment/notifications#jira | UNDEFINED | ACQUIA ENVIRONMENT, LAGOON ENVIRONMENT |
VORTEX_NOTIFY_JIRA_USER_EMAIL | JIRA user email address. | user@example.com | .env |
VORTEX_NOTIFY_NEWRELIC_APIKEY | NewRelic API key, usually of type 'USER'. @see https://www.vortextemplate.com/docs/deployment/notifications#new-relic | UNDEFINED | ACQUIA ENVIRONMENT, LAGOON ENVIRONMENT |
VORTEX_NOTIFY_SLACK_WEBHOOK | Slack webhook URL. The incoming Webhook URL from your Slack app configuration. @see https://www.vortextemplate.com/docs/deployment/notifications#slack | UNDEFINED | ACQUIA ENVIRONMENT, LAGOON ENVIRONMENT |
VORTEX_NOTIFY_WEBHOOK_URL | Webhook URL to send notifications to. | UNDEFINED | .env, ACQUIA ENVIRONMENT, LAGOON ENVIRONMENT |
VORTEX_PROJECT | Project name. Drives internal naming within the codebase. Does not affect the names of containers and development URL - those depend on the project directory and can be overridden with $COMPOSE_PROJECT_NAME. | your_site | .env |
VORTEX_PROVISION_ACQUIA_SKIP | Skip Drupal site provisioning in Acquia environment. | UNDEFINED | ACQUIA ENVIRONMENT |
VORTEX_PROVISION_FALLBACK_TO_PROFILE | Fallback to profile installation if the database dump is not available. When enabled and the provision type is set to "database", the site will be installed from the profile if the database dump file or container image is not available. | UNDEFINED | .env |
VORTEX_PROVISION_OVERRIDE_DB | Overwrite a database if it exists. Usually set to 0 in deployed environments and can be temporary set to 1 for a specific deployment. Set this to 1 in .env.local to override when developing locally. | UNDEFINED | .env, .env.local.example |
VORTEX_PROVISION_SANITIZE_DB_EMAIL | Sanitization email pattern. Applied if database sanitization is enabled. @see https://www.vortextemplate.com/docs/drupal/provision#database-sanitization | user_%uid@your-site-domain.example | .env |
VORTEX_PROVISION_SANITIZE_DB_PASSWORD | Password replacement used for sanitized database. | <RANDOM STRING> | .env |
VORTEX_PROVISION_SANITIZE_DB_REPLACE_USERNAME_WITH_EMAIL | Replace username with email after database sanitization. Useful when email is used as username. | UNDEFINED | .env |
VORTEX_PROVISION_SANITIZE_DB_SKIP | Skip database sanitization. Database sanitization is enabled by default in all non-production environments and is always skipped in the production environment. @see https://www.vortextemplate.com/docs/drupal/provision#database-sanitization | UNDEFINED | .env |
VORTEX_PROVISION_TYPE | Set to 'profile' to install a site from profile instead of the database dump. | database | .env |
VORTEX_PROVISION_USE_MAINTENANCE_MODE | Put the site into a maintenance mode during site provisioning. | 1 | .env |
VORTEX_PROVISION_VERIFY_CONFIG_UNCHANGED_AFTER_UPDATE | Verify that configuration was not changed by database updates. If enabled and config files are present, the provision will fail if database update hooks modify active configuration, preventing drush config:import from silently overwriting those changes. | UNDEFINED | .env |
VORTEX_PURGE_CACHE_ACQUIA_SKIP | Skip purging of edge cache in Acquia environment. | UNDEFINED | ACQUIA ENVIRONMENT |
VORTEX_RELEASE_VERSION_SCHEME | Versioning scheme used for releases. Can be one of: calver, semver, other @see https://www.vortextemplate.com/docs/releasing | calver | .env |
VORTEX_TASK_COPY_DB_ACQUIA_SKIP | Skip copying of database between Acquia environment. | UNDEFINED | ACQUIA ENVIRONMENT |
VORTEX_TASK_COPY_FILES_ACQUIA_SKIP | Skip copying of files between Acquia environment. | UNDEFINED | ACQUIA ENVIRONMENT |
VORTEX_UNBLOCK_ADMIN | Unblock admin account when logging in. | 1 | .env |
WEBROOT | Name of the web root directory containing a Drupal codebase. | web | .env |
Variable list generated with Shellvar - Utility to work with shell variables