docker-compose.yml可以从laravel .env文件中读取数据库连接吗?

时间:2018-06-16 09:14:48

标签: laravel docker docker-compose environment-variables

我的文件夹结构如下所示

- root-dir
-- docker
-- src //contains laravel application
---.env
-- docker-compose.yml

正如您在laravel .env和docker-compose.yml文件中所知,您需要指定db的连接设置

// .env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

// docker-compose.yml
environment:
   - MYSQL_ROOT_PASSWORD=secret
   - MYSQL_DATABASE=homestead
   - MYSQL_USER=homestead
   - MYSQL_PASSWORD=secret

有没有办法让docker-compose“读取”.env文件中的设置,因为最后一个没有被git跟踪?所以基本上如果我必须更改设置,我必须只在一个文件中执行它,也不要在git上跟踪docker-compose.yml的凭据

1 个答案:

答案 0 :(得分:1)

你可以这样做(来自docker documentation https://docs.docker.com/compose/environment-variables/#the-env-file):

“。env”文件 您可以在Compose文件中引用的任何环境变量的默认值,或用于配置Compose,在名为.env的环境文件中:

$ cat .env
TAG=v1.5

$ cat docker-compose.yml
version: '3'
services:
  web:
    image: "webapp:${TAG}"

您也可以使用:

“env_file”配置选项 您可以使用'env_file'选项将多个环境变量从外部文件传递到服务的容器,就像使用docker run --env-file = FILE ...:

一样
web:
  env_file:
    - web-variables.env