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等后缀就行
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 本地部署DeepSeek后,没有好看的交互界面怎么行!
· 趁着过年的时候手搓了一个低代码框架
· 用 C# 插值字符串处理器写一个 sscanf
· 推荐一个DeepSeek 大模型的免费 API 项目!兼容OpenAI接口!