乐闻世界logo
搜索文章和话题

如何在docker-compose中使用环境变量?

3 个月前提问
3 个月前修改
浏览次数24

1个答案

1

docker-compose 中使用环境变量是一种常见的做法,以确保容器化应用程序在不同环境中的灵活配置。以下是一些主要的方法来在 docker-compose 文件中引入和使用环境变量:

1. .env 文件

最简单的方法是在与 docker-compose.yml 文件同一目录下创建一个 .env 文件。 docker-compose 默认会读取 .env 文件中的变量。

例子

创建 .env 文件:

shell
DB_USER=root DB_PASS=example

docker-compose.yml 中使用这些变量:

yaml
version: '3.8' services: db: image: mysql environment: MYSQL_ROOT_PASSWORD: ${DB_PASS} MYSQL_USER: ${DB_USER} ports: - "3306:3306"

这样,MYSQL_ROOT_PASSWORDMYSQL_USER 环境变量将使用 .env 文件中定义的值。

2. 使用 environment

可以直接在 docker-compose.yml 中的服务定义下使用 environment 来设置环境变量。

例子

yaml
version: '3.8' services: app: image: myapp environment: - DEBUG=1 - NODE_ENV=production

3. 使用 env_file 指令

如果环境变量较多,可以将它们放在一个或多个独立的文件中,然后在 docker-compose.yml 中引用。

例子: 创建 app.env 文件:

shell
DEBUG=1 NODE_ENV=production

docker-compose.yml 中引用:

yaml
version: '3.8' services: app: image: myapp env_file: - app.env

4. 命令行变量

在运行 docker-compose 命令时,也可以通过命令行传递环境变量。

例子

bash
$ DB_USER=root DB_PASS=example docker-compose up

这些变量同样可以在 docker-compose.yml 文件中使用。

总结

使用环境变量,可以有效地将配置从应用代码中分离出来,提高应用的可移植性和安全性。根据具体需求选择合适的方法,可以使得配置更加灵活和方便管理。

2024年8月10日 00:55 回复

你的答案