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

时间:2017-01-26 15:34:07

标签: environment-variables docker-compose

我有一个缓存文件夹,路径存储在一个环境变量中:$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.

我不是很好但看起来,.env文件不支持使用变量。

1 个答案:

答案 0 :(得分:0)

是。进入.env文件,您无法使用变量。突然但真实。 Docker的实际编写版本1.8。

但您可以将变量用于docker-compose.yml文件,如

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

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