Docker Compose支持使用环境变量文件(.env
文件)来设置Compose文件中使用的环境变量。
在Compose文件中,可以使用${VARIABLE}
的语法来引用环境变量。如果在Compose文件中引用了一个未设置的环境变量,Compose将会把该变量的值设置为一个空字符串。
在使用.env
文件之前,需要先确保Docker Compose已经安装在你的系统上。然后按照以下步骤来使用.env
文件:
-
在项目的根目录下创建一个名为
.env
的文件。 -
在
.env
文件中添加需要设置的环境变量,例如:DB_USER=myuser DB_PASSWORD=mypassword
-
在Compose文件中使用
${VARIABLE}
的语法来引用环境变量,例如:services: db: image: postgres environment: POSTGRES_USER: ${DB_USER} POSTGRES_PASSWORD: ${DB_PASSWORD}
-
启动Compose容器时,使用
docker-compose up
命令并加上--env-file
选项来指定.env
文件的路径,例如:docker-compose up --env-file .env
这将会把
.env
文件中定义的环境变量加载到Compose容器中。
注意事项:
.env
文件中的环境变量会被覆盖已有的环境变量。- 通过设置
--env-file
选项来指定.env
文件时,只能指定一个文件,不能同时指定多个文件。 - 在Compose文件中,环境变量的优先级高于
.env
文件中定义的变量。例如,如果Compose文件中定义了一个环境变量DB_USER
,则它的值将会覆盖.env
文件中定义的同名变量。
在.env
文件中,所有的变量都是以字符串形式进行存储和读取的,因此在使用这些变量时,需要将其转换为相应的数据类型,如整数、浮点数或布尔值。
在.env
文件中,如果要定义一个整数类型的变量,可以将其作为字符串写入,然后在应用程序中使用int()
函数或类似函数进行转换。例如:
DB_PORT="5432"
可以在应用程序中这样使用:
import os
db_port = int(os.getenv("DB_PORT"))
这将会把DB_PORT
变量的字符串值转换为整数类型。
类似地,如果要定义一个布尔类型的变量,可以将其作为字符串写入,然后在应用程序中使用str()
函数或类似函数进行转换。例如:
DEBUG="true"
可以在应用程序中这样使用:
import os
debug = bool(os.getenv("DEBUG"))
这将会把DEBUG
变量的字符串值转换为布尔类型