首页 > 其他 > 详细

laravel在docker环境下动态读取.env.xx文件

时间:2020-03-11 12:51:50      阅读:140      评论:0      收藏:0      [点我收藏+]

场景

在项目开发过程中,经常会有多个配置文件需要修改,例如想调试测试testing环境,每次都需要修改.env文件中的数据库等相关配置。测试完之后,又要切换到本地开发环境local。这样很不方便,能不能本地有很多个配置文件.env.local,本地有.env.testing文件,每次调试只要动态切换读取哪个env文件呢?本身laravel支持动态读取.env.xx后缀的env文件。但是是通过读取系统环境变量APP_ENV来的

在docker环境中

docker一键化部署非常方便,很适合这种场景。在docker创建的时候设置好APP_ENV环境变量。

.docker.env

# PHP配置
PHP_NET_ADDR=192.158.0.3
PHP_CONFIG_DIR=/code/docker-lnmp/config/php/
PHP_CODE_DIR=/code/
PHP_APP_ENV=local

docker-compose.yml

version: '3'
services:


  fpm:
   build: 
    context: ./build
    dockerfile: fpm
   # image: php:7.2.21-fpm-alpine3.10
   container_name: fpm
   restart: always
   environment:
    APP_ENV: ${PHP_APP_ENV}
   volumes:
    - ${PHP_CONFIG_DIR}php-fmp.conf:/usr/local/etc/php/php-fpm.conf
    - ${PHP_CONFIG_DIR}conf.d/php.ini:/usr/local/etc/php/conf.d/php.ini
    - ${PHP_CODE_DIR}:/code
   working_dir: /code
   networks:
    lnmpnet:
     ipv4_address: ${PHP_NET_ADDR}


networks:
  lnmpnet:
   driver: bridge
   ipam:
    config:
     - subnet: 192.158.0.0/16

使用

  • 修改.docker.env中的APP_ENV变量
  • 删除fpm镜像,然后启动docker-compose stop fpm && docker-compose rm fpm或者docker-compose down fpm
  • 启动docker-compose up -d fpm

可以将上面的三步操作写成一个shell脚本./swhitch local

方式2

通过修改文件

bootstrap/app.php

// 动态切换多个环境变量
$envPath = dirname(app_path()) . '/';
$environmentPath = $envPath . '.env';
$envContent = trim(file_get_contents($environmentPath));
$envFile = '.env.' . $envContent;
if (file_exists($envPath . $envFile)) {
    $app->loadEnvironmentFrom($envFile);
}

使用

在本地.env文件中写local,testing等后缀就行

laravel在docker环境下动态读取.env.xx文件

原文:https://www.cnblogs.com/shiwenhu/p/12461048.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!