Published: 2024-08-20 | Updated: 2025-08-27
Any environment variables you want to set in Coolify UI should be defined in
docker-compose.yaml with the following syntax:
services:
myservice:
environment:
# Gets passed to the container but will not be visible in Coolify's UI
- SOME_HARDCODED_VALUE=hello
# Creates an uninitialized environment variable editable in Coolify's UI
- SOME_VARIABLE=${SOME_VARIABLE}
# Creates an environment variable of value "hello" editable in Coolify's UI
- SOME_DEFAULT_VARIABLE=${SOME_DEFAULT_VARIABLE:-hello}
See Coolify Docs on defining environment variables for more info.
.env files?As far as Coolify is concerned, docker-compose.yaml is the single source of
truth and all env variables should be defined in it. Using .env.example and
.env is still useful for local development especially if you’re not running a
container in development (because then variables from docker-compose.yaml are
not available).
Navigate to Environment Variables configuration in your project to set environment variables. Remember to click Update after changing a value.
Coolify creates a .env file from the variables that is used during deployment
so basic .env file formatting principles apply with some additional
considerations.
You should check Is Literal? for each variable unless you specifically want
to use interpolation. Not using Is Literal? causes problems with certain
special characters (such as $) so it’s best to check it for all variables
by default.
If your value contains special characters (e.g. @), you need to wrap the value
in quotes. (e.g. admin@example.com should be "admin@example.com"). Be wary
of values that may be interpreted as escape sequences (such as a value ending in
\).
You may optionally Lock any secrets you don’t want to be editable in Coolify
UI. If you want to change a locked value, you need to delete it, navigate to
General and then back to Environment Variables. This reloads the deleted
environment variables from docker-compose.yaml.
[!WARNING]
Locked environment variables are only hidden in the Coolify UI. They are still stored in plain text on the host system in
/data/coolify/applications/<id>/.envfile owned byroot.
If you want to define a build arg, just add it as an environment
variable in Coolfiy UI and use it in docker-compose-yml.
[!IMPORTANT]
Don’t use Build Variable? for build args when using Docker Compose. They don’t work.
# docker-compose.yml
services:
app:
build:
dockerfile: Dockerfile
args:
- TEST_SECRET
By omitting the value of a build arg, Docker Compose automatically uses the
value defined in the .env file written by Coolify.
All content © Kimmo Salmela — Source on GitHub