如何在 docker .env 文件中使用环境变量?

Posted

技术标签:

【中文标题】如何在 docker .env 文件中使用环境变量?【英文标题】:How to use environment variables inside docker .env file? 【发布时间】:2017-06-12 03:18:46 【问题描述】:

我有一个缓存文件夹,路径存储在环境变量中:$LOCAL_CACHE (export LOCAL_CACHE=/home/me/path/to/any/cache/folder)

现在我想在我的 .env 文件中添加一些额外的文件夹:

我的 .env 文件:

LOCAL_COMPOSER_DIR=$LOCAL_CACHE/composer
LOCAL_NPM_DIR=$LOCAL_CACHE/npm
LOCAL_BOWER_DIR=$LOCAL_CACHE/bower

我的 docker_compose.yml 看起来像这样:

version: '2'
services:
  composer:
    env_file: .env
    image: composer/composer
    volumes:
      - ./src:$APP_ROOT
      - $LOCAL_COMPOSER_DIR:/composer
    working_dir: $APP_ROOT

当我使用docker-compose run composer instal. ... 启动服务时,它会因以下错误而停止:ERROR: Named volume "$LOCAL_CACHE"/composer":/composer:rw" is used in service "composer" but no declaration was found in the volumes section.

我不是 shure,但 .env 文件似乎不支持使用变量。

【问题讨论】:

哪个操作系统在运行?操作系统?还是 Linux? 两者(linux和osx) 【参考方案1】:

是的。进入.env 文件你不能使用变量。突然但真实。实际适用于 docker compose 版本 1.8。

但是你可以在docker-compose.yml文件中使用变量

volumes:
  - $LOCAL_COMPOSER_DIR/$CACHE_DIR:/composer/$CACHE_DIR

This answer 建议我们另一种方式。

【讨论】:

有时你有不同的系统和不同的环境变量。我的想法是,规范化 .env.DIST 文件中的环境变量,而不是 docker-compose.yml 中的环境变量。

以上是关于如何在 docker .env 文件中使用环境变量?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Docker 和 PHP 从 env 文件加载环境变量

如何持久化docker中的环境变量

如何使用 .env 文件中的环境变量来填写同一个 .env 文件中的其他环境变量

如何从docker compose文件中访问env变量

如何正确设置环境变量 Gitlab CI/CD 和 Docker

Node环境变量Process.env