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位于项目的根文件夹中
Mydocker 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
中。