docker-撰写如何将env变量传递到文件中

时间:2017-06-02 20:28:45

标签: docker-compose

有没有机会将变量从docker-compose传递到apache.conf文件? 我有带变量的Dockerfile

ENV APACHE_SERVER_NAME localhost
ENV APACHE_DOCUMENT_ROOT /var/www/html

我有apache.conf,我在构建图像时将其复制到 / etc / apache2 / sites-available /

ServerName ${APACHE_SERVER_NAME}
DocumentRoot ${APACHE_DOCUMENT_ROOT}

我有docker-compose.yml

environment:
        - APACHE_SERVER_NAME=cms
        - APACHE_DOCUMENT_ROOT=/var/www/html/public

当我运行docker-compose时,没有任何事情发生,容器中的apache.conf也没有改变。 我完全错了,这是不可能的,还是我错过了任何一个步骤或点? 谢谢

1 个答案:

答案 0 :(得分:0)

让我解释一下传递环境变量的方法之间的一些小差异:

用于构建时间和运行时入口点的环境变量

  • ENV(Dockerfile):在构建之前在Dockerfile中指定容器,将有入口点的环境变量。
  • 环境:与ENV相同,但对于docker-compose。
  • docker run -e VAR=value...与之前相同,但对于cli。

仅适用于构建时间的环境变量

  • ARG(Dockerfile):它们不会出现在已部署的容器中。

每个容器和构建都可以访问环境变量

    工作目录中定义的
  • .env文件执行docker rundocker-compose
  • env_file:docker-compose.yml文件中的部分,用于定义另一个.env文件。

当您尝试为apache conf文件定义变量时,也许您应该尝试使用apache作为入口点,或者只在.env文件中定义它们。

相关问题