为什么我需要在docker-compose.yml中显式声明env_file?

Progonkpa

我扩展了Wordpress图像以添加XDebug,PHPUnit,composer和phpcs。

我的项目根目录如下所示:


    docker -wordpress Dockerfile docker 
-compose.yml 
.env

docker-compose.yml:

version: '3.7'

services:
   db:
     image: mysql:5.7
     volumes:
       - ./docker-mysql/db_data:/var/lib/mysql
     restart: always
     ports:
       - "3306:3306"
     env_file: .env

   wordpress:
     depends_on:
       - db
     image: progonkpa/mywordpress
     ports:
       - "80:80"
       - "443:443"
     restart: always
     volumes:
       - ./src:/var/www/html
     env_file: .env

volumes:
    db_data:

此配置有效,但仅是因为我明确地添加了env_file声明,而我认为如果遵循正确的约定,Docker将自动拾取文件:root中的.env文件。

我实际上想删除docker-compose.yml中的env_file声明,但是随后遇到了一些问题。

MySQL容器日志:

database is uninitialized and password option is not specified
You need to specify one of MYSQL_ROOT_PASSWORD

我似乎在初始化容器时首次运行时,与mysql相关的变量未通过。.env文件包含常用的Wordpress和MySQL变量:

MYSQL_DATABASE=wordpress
MYSQL_USER=wordpress
MYSQL_PASSWORD=wordpress
MYSQL_ROOT_PASSWORD=wordpress
WORDPRESS_DB_HOST=db:3306
WORDPRESS_DB_USER=wordpress
WORDPRESS_DB_PASSWORD=wordpress

那么为什么我的变量没有到达我的容器呢?

米奇

您可以在两个地方使用变量:在compose文件本身内部和在所创建的容器内部docker-compose

.env文件将用于docker-compose调整docker-compose命令本身的环境这对于yaml文件中需要扩展的变量或compose本身使用的变量很有用。有关后者的更多信息,请参见撰写CLI变量docs

定义env_fileyaml内部内容将从文件中获取环境变量,并将其注入到容器中。这使它对您的应用程序可见,但是不能用于要docker-compose扩展的Yaml内部变量,因为该变量扩展发生在env_file解析内容之前

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用env_file在docker-compose.yml中设置构建参数

来自分类Dev

如果我使用的是docker-compose.yml,为什么我仍然需要一个Dockerfile?

来自分类Dev

如何从env_file获取docker-compose的端口?

来自分类Dev

Docker-compose 在命令中使用 env_file 变量

来自分类Dev

使用新的 env_file 更新 in-docker-compose 容器

来自分类Dev

Docker Compose中可以有环境和env_file吗?

来自分类Dev

docker-compose无法识别env_file文件/位置,并且仍尝试使用默认的.env

来自分类Dev

为什么docker-compose在随机路径而非我在docker-compose.yml中指定的路径下创建卷?

来自分类Dev

为什么我们需要在MSIL中显式调用父构造函数?

来自分类Dev

为什么Docker compose需要太长时间才能在Windows中构建?

来自分类Dev

如何通过命令行指定在 docker-compose 中使用哪个 env_file

来自分类Dev

为什么我需要在Kotlin中在=之前添加空间?

来自分类Dev

Postgres:为什么我需要在 max() 中引用列名?

来自分类Dev

为什么我需要在Promise .then()中关闭?

来自分类Dev

为什么我需要在Elasticsearch中缩小索引

来自分类Dev

为什么我需要在循环条件中包含 EOF?

来自分类Dev

为什么我需要在Firebase中退订`onAuthStateChanged`

来自分类Dev

如果我运行docker-compose up,我是否需要目录中的Dockerfile以及docker-compose.yml文件?

来自分类Dev

为什么我的容器不加入docker-compose中的现有网络?

来自分类Dev

为什么我们在 Docker Compose 中增加版本?(版本 1、2 和 3)

来自分类Dev

为什么在我的dockerfile中以prod阶段为目标的docker-compose也运行dev目标?

来自分类Dev

为什么我需要在这里显式编写一个构造函数?

来自分类Dev

为什么我需要在C#显式实现中将'this'转换为接口类型?

来自分类Dev

为什么我需要在Ubuntu 12.04 Precise下显式运行Rails迁移?

来自分类Dev

为什么 docker-compose 在 bash 脚本中执行 ssh 命令时看不到我的 .env 文件?

来自分类Dev

为什么我需要在forloop中声明长度而不直接使用?

来自分类Dev

为什么我们需要在实体中声明非空构造函数?

来自分类Dev

码头工人:如果我在docker-compose.yml中声明卷,Nginx不会运行

来自分类Dev

为什么我们只能将图像推送而不将docker-compose.yml推送到dockerhub

Related 相关文章

  1. 1

    使用env_file在docker-compose.yml中设置构建参数

  2. 2

    如果我使用的是docker-compose.yml,为什么我仍然需要一个Dockerfile?

  3. 3

    如何从env_file获取docker-compose的端口?

  4. 4

    Docker-compose 在命令中使用 env_file 变量

  5. 5

    使用新的 env_file 更新 in-docker-compose 容器

  6. 6

    Docker Compose中可以有环境和env_file吗?

  7. 7

    docker-compose无法识别env_file文件/位置,并且仍尝试使用默认的.env

  8. 8

    为什么docker-compose在随机路径而非我在docker-compose.yml中指定的路径下创建卷?

  9. 9

    为什么我们需要在MSIL中显式调用父构造函数?

  10. 10

    为什么Docker compose需要太长时间才能在Windows中构建?

  11. 11

    如何通过命令行指定在 docker-compose 中使用哪个 env_file

  12. 12

    为什么我需要在Kotlin中在=之前添加空间?

  13. 13

    Postgres:为什么我需要在 max() 中引用列名?

  14. 14

    为什么我需要在Promise .then()中关闭?

  15. 15

    为什么我需要在Elasticsearch中缩小索引

  16. 16

    为什么我需要在循环条件中包含 EOF?

  17. 17

    为什么我需要在Firebase中退订`onAuthStateChanged`

  18. 18

    如果我运行docker-compose up,我是否需要目录中的Dockerfile以及docker-compose.yml文件?

  19. 19

    为什么我的容器不加入docker-compose中的现有网络?

  20. 20

    为什么我们在 Docker Compose 中增加版本?(版本 1、2 和 3)

  21. 21

    为什么在我的dockerfile中以prod阶段为目标的docker-compose也运行dev目标?

  22. 22

    为什么我需要在这里显式编写一个构造函数?

  23. 23

    为什么我需要在C#显式实现中将'this'转换为接口类型?

  24. 24

    为什么我需要在Ubuntu 12.04 Precise下显式运行Rails迁移?

  25. 25

    为什么 docker-compose 在 bash 脚本中执行 ssh 命令时看不到我的 .env 文件?

  26. 26

    为什么我需要在forloop中声明长度而不直接使用?

  27. 27

    为什么我们需要在实体中声明非空构造函数?

  28. 28

    码头工人:如果我在docker-compose.yml中声明卷,Nginx不会运行

  29. 29

    为什么我们只能将图像推送而不将docker-compose.yml推送到dockerhub

热门标签

归档