• 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等后缀就行

  • 相关阅读:
    局部变量的认识
    179一个错误的认识
    (jmeter笔记) websocket接口测试
    (jmeter笔记)聚合报告分析
    (jmeter笔记)模拟用户各种场景压测
    (linux笔记)开放防火墙端口
    (jmeter笔记)导出响应内容的网络文件
    (jmeter笔记)jmeter导出excel,中文显示乱码
    (jmeter笔记)jmeter监控服务器资源
    (Jmeter笔记)jmeter连接数据库(mysql)
  • 原文地址:https://www.cnblogs.com/shiwenhu/p/12461048.html
Copyright © 2020-2023  润新知