zoukankan      html  css  js  c++  java
  • laravel在docker环境下动态读取.env.xx文件

    场景

    在项目开发过程中,经常会有多个配置文件需要修改,例如想调试测试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等后缀就行

  • 相关阅读:
    关于 web service 参数传递的序列化反序列化问题
    (转)GIS理论(墨卡托投影、地理坐标系、地面分辨率、地图比例尺、Bing Maps Tile System)
    (转)如何oracle调试存储过程
    word中字号和磅数的对应
    (转)C# 泛型相关讲解
    16 款最流行的 JavaScript 框架(转)
    mark:about 手势
    UIWebView
    android 无法安装ApiDemos
    Android开发中的单元测试
  • 原文地址:https://www.cnblogs.com/shiwenhu/p/12461048.html
Copyright © 2011-2022 走看看