# docker-compose.yml version: ‘3.7’ services: app:
image: laravelsail/php82-composer:latest
container_name: laravel-app
volumes:
- .:/var/www/html
- ./.env:/var/www/html/.env:ro # 关键:只读挂载,避免容器内误改
environment:
- APP_ENV=local
- APP_DEBUG=true
command: php -S 0.0.0.0:8000 -t public
⚠️ 注意事项:
- 挂载必须在 volumes 中显式声明:./.env:/path/in/container,不能依赖构建镜像时 COPY .env —— 那样文件会被固化进镜像层,无法热更新。
- Laravel 默认不支持运行时重载 .env:即使挂载成功,Artisan 命令(如 config:clear)仅清空 bootstrap/cache/config.php 缓存,但不会重新解析 .env。如需动态生效,需配合 vladimir-yuldashev/laravel-queue-rabbitmq 等支持热重载的扩展,或自行实现配置监听逻辑(生产环境不推荐)。
- 开发环境推荐方案:挂载 + 重启应用进程(非容器)。例如使用 sail up –build 或 docker-compose restart app,让 PHP-FPM 或内置服务器重新加载 .env。
- 生产环境严禁挂载 .env:应通过 environment 字段或 Docker secrets 注入敏感变量,挂载 .env 存在权限与安全风险。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/281834.html