mirror of https://github.com/docker/docs.git
96 lines
3.9 KiB
Markdown
96 lines
3.9 KiB
Markdown
---
|
|
description: Declare default environment variables in a file
|
|
keywords: fig, composition, compose, docker, orchestration, environment, env file
|
|
title: Declare default environment variables in file
|
|
---
|
|
|
|
Compose supports declaring environment variables in an environment file.
|
|
|
|
## Syntax
|
|
The following syntax rules apply to environment files:
|
|
|
|
- Each line represents a key-value pair. Values can optionally be quoted.
|
|
- `VAR=VAL` -> `VAL`
|
|
- `VAR="VAL"` -> `VAL`
|
|
- `VAR='VAL'` -> `VAL`
|
|
- Lines beginning with `#` are processed as comments and ignored.
|
|
- Inline comments for unquoted values must be preceded with a space.
|
|
- `VAR=VAL # comment` -> `VAL`
|
|
- `VAR=VAL# not a comment` -> `VAL# not a comment`
|
|
- Inline comments for quoted values must follow the closing quote.
|
|
- `VAR="VAL # not a comment"` -> `VAL # not a comment`
|
|
- `VAR="VAL" # comment` -> `VAL`
|
|
- Blank lines are ignored.
|
|
- Unquoted and double-quoted (`"`) values have [parameter expansion](#parameter-expansion) applied.
|
|
- Single-quoted (`'`) values are used literally.
|
|
- `VAR='$OTHER'` -> `$OTHER`
|
|
- `VAR='${OTHER}'` -> `${OTHER}`
|
|
- Quotes can be escaped with `\`.
|
|
- `VAR='Let\'s go!'` -> `Let's go!`
|
|
- `VAR="{\"hello\": \"json\"}"` -> `{"hello": "json"}`
|
|
- Common shell escape sequences including `\n`, `\r`, `\t`, and `\\` are supported in double-quoted values.
|
|
- `VAR="some\tvalue"` -> `some value`
|
|
- `VAR='some\tvalue'` -> `some\tvalue`
|
|
- `VAR=some\tvalue` -> `some\tvalue`
|
|
|
|
### Parameter Expansion
|
|
Compose supports parameter expansion in environment files.
|
|
Parameter expansion is applied for unquoted and double-quoted values.
|
|
Both braced (`${VAR}`) and unbraced (`$VAR`) expressions are supported.
|
|
|
|
For braced expressions, the following formats are supported:
|
|
- Direct substitution
|
|
- `${VAR}` -> value of `VAR`
|
|
- Default value
|
|
- `${VAR:-default}` -> value of `VAR` if set and non-empty, otherwise `default`
|
|
- `${VAR-default}` -> value of `VAR` if set, otherwise `default`
|
|
- Required value
|
|
- `${VAR:?error}` -> value of `VAR` if set and non-empty, otherwise exit with error
|
|
- `${VAR?error}` -> value of `VAR` if set, otherwise exit with error
|
|
- Alternative value
|
|
- `${VAR:+replacement}` -> `replacement` if `VAR` is set and non-empty, otherwise empty
|
|
- `${VAR+replacement}` -> `replacement` if `VAR` is set, otherwise empty
|
|
|
|
## Precedence
|
|
Environment variables from an environment file have lower precedence than those passed via the command-line or via the `environment` section in project YAML.
|
|
Refer to [Environment Variables Precedence](./envvars-precedence.md) for details.
|
|
|
|
## Compose file and CLI variables
|
|
|
|
The environment variables you define here are used for
|
|
[variable substitution](compose-file/compose-file-v3.md#variable-substitution)
|
|
in your Compose file, and can also be used to define the following
|
|
[CLI variables](reference/envvars.md):
|
|
|
|
- `COMPOSE_API_VERSION`
|
|
- `COMPOSE_CONVERT_WINDOWS_PATHS`
|
|
- `COMPOSE_FILE`
|
|
- `COMPOSE_HTTP_TIMEOUT`
|
|
- `COMPOSE_PROFILES`
|
|
- `COMPOSE_PROJECT_NAME`
|
|
- `COMPOSE_TLS_VERSION`
|
|
- `DOCKER_CERT_PATH`
|
|
- `DOCKER_HOST`
|
|
- `DOCKER_TLS_VERIFY`
|
|
|
|
> **Notes**
|
|
>
|
|
> * Values present in the environment at runtime always override those defined
|
|
> inside the `.env` file. Similarly, values passed via command-line arguments
|
|
> take precedence as well.
|
|
> * Environment variables defined in the `.env` file are not automatically
|
|
> visible inside containers. To set container-applicable environment variables,
|
|
> follow the guidelines in the topic
|
|
> [Environment variables in Compose](environment-variables.md), which
|
|
> describes how to pass shell environment variables through to containers,
|
|
> define environment variables in Compose files, and more.
|
|
|
|
## More Compose documentation
|
|
|
|
- [User guide](index.md)
|
|
- [Installing Compose](install/index.md)
|
|
- [Getting Started](gettingstarted.md)
|
|
- [Command line reference](reference/index.md)
|
|
- [Compose file reference](compose-file/index.md)
|
|
- [Sample apps with Compose](samples-for-compose.md)
|