Laravel指定不同于“.env”的名称,或使ingore“.env”,以避免与docker和docker compose冲突

Laravel指定不同于“.env”的名称,或使ingore“.env”,以避免与docker和docker compose冲突,laravel,docker,docker-compose,Laravel,Docker,Docker Compose,因为我使用docker和docker compose而不是Homestead和任何基于Vargrant的开发解决方案,所以我希望避免在使用.env文件时与laravel发生冲突。因此,我希望laravel不要查找此文件,而是从环境变量中获取所需的设置数据 那么,我如何指定、配置laravel而不是以查找.env文件呢?如果不可能,如何更改文件名以搜索环境变量和设置 docker compose.yml位于项目的根文件夹中 Mydocker compose.yml是: version: '3.1'

因为我使用
docker
docker compose
而不是
Homestead
和任何基于
Vargrant
的开发解决方案,所以我希望避免在使用
.env
文件时与laravel发生冲突。因此,我希望laravel不要查找此文件,而是从环境变量中获取所需的设置数据

那么,我如何指定、配置laravel而不是以查找
.env
文件呢?如果不可能,如何更改文件名以搜索环境变量和设置

docker compose.yml位于项目的根文件夹中

My
docker compose.yml
是:

version: '3.1'
services:
  develop:
    image: ddesyllas/php-dev:${TAG}
    volumes:
      - ".:/var/www/html"
    links: 
      - memcache
    environment:
      DB_CONNECTION: postgresql
      DB_HOST : postgresql
      DB_PORT : 5432
      DB_DATABASE: ${DOCKER_POSTGRES_DB}
      DB_USERNAME: ${DOCKER_POSTGRES_USER}
      DB_PASSWORD: ${DOCKER_POSTGRES_PASSWORD}

  nginx:
    image: nginx:alpine
    ports:
      - 7880:7880
    links:
      - "develop:develop"
    volumes:
      - ".:/var/www/html"
      - "./docker/nginx.conf:/etc/nginx/nginx.conf:ro"


  postgresql:
    image: postgres:alpine
    volumes:
      - './docker/misc_volumes/postgresql:/var/lib/postgresql/data'
    environment:
      POSTGRES_USER: ${DOCKER_POSTGRES_USER}
      POSTGRES_DB: ${DOCKER_POSTGRES_DB}
      POSTGRES_PASSWORD: ${DOCKER_POSTGRES_PASSWORD}

  memcache:
    image: memcached:alpine

因此,在AOP方法中需要全局设置使用一次应用全局方法。例如,我不希望我的laravel应用程序能够访问
${TAG}
环境变量。

docker compose.yml
中,可以指定
env_文件
.env
不同,例如:

version: "3.1"
services:
  webserver:
    image: nginx:alpine
    restart: always
    container_name: laravel-webserver
    working_dir: /application
    env_file:
      - .env_docker
    networks: 
      - intranet

networks:
  intranet:
    external: false
这里,
docker compose.yml
将使用
.env\u docker
而不是
.env

编辑:

如果要为laravel
.env
使用不同的文件,则可以更改
部分以指定如下内容:

volumes:
      - ".:/var/www/html"
      - "./docker/nginx.conf:/etc/nginx/nginx.conf:ro"
      - "/<path to your different env file>:/var/www/html/.env"

卷:
-“:/var/www/html”
-“/docker/nginx.conf:/etc/nginx/nginx.conf:ro”
-“/:/var/www/html/.env”

我不希望每个容器都有变量,我希望整个
docker compose.yml
使用.env作为变量提供程序,而不是laravel。如您所见,我使用
docker compose.yml
来传递所需的设置。我的意思是
laravel
根本不使用/读取
.env
。在其他病房中,在nginx.conf中指定asny环境变量,并通过fastcgi传递它们,对吗?因此您可以说使用卷asn并将其装载到不同的路径中,以获得laravel看起来不一样对吧?是的。。你可以这样做。。。您可以从src中选择另一个文件.env,该文件将在容器中重命名为.env。有关详细信息,请查看
编辑的
部分。此外,为了避免进一步冲突,该文件
.env
也应放在
.dockrignore
中。