Laradock 学习笔记
Laradock 简介 Laradock 是一个基于 Docker 的完整 PHP 开发环境,专为 PHP 开发者(特别是 Laravel 开发者)设计。它提供了一套预配置的 Docker 容器,包含开发中常用的服务,如 Nginx、MySQL、Redis、PHP-FPM 等。 主要优势 开箱即用:预配置的开发环境,无需繁琐设置 一致性:确保开发、测试和生产环境的一致性 灵活性:支持多种 PHP 版本和扩展 模块化:可以根据需要启用或禁用特定服务 跨平台:在 Windows、macOS 和 Linux 上表现一致 基本架构 Laradock 采用模块化设计,每个服务都运行在独立的容器中,通过 Docker 网络连接: Workspace:包含开发工具的容器 PHP-FPM:PHP 解释器 Nginx/Apache:Web 服务器 MySQL/PostgreSQL/MongoDB:数据库 Redis/Memcached:缓存 其他辅助服务(邮件服务器、消息队列等) Dockerfile DEBIAN_FRONTEND ENV DEBIAN_FRONTEND=noninteractive DEBIAN_FRONTEND 环境变量用于告知操作系统应该从哪儿获得用户输入。 设置为 “noninteractive” 可以实现自动安装而无需用户交互,对于 CI/CD 流程和 Docker 构建特别有用。这在运行 apt-get 命令时尤为重要,因为它会自动选择默认选项并以最快速度完成构建。 最佳实践是在 RUN 命令中设置该变量,而不是使用 ENV 进行全局设置,因为全局设置会影响容器运行时的交互体验: RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y ... 基于角色的用户配置 # 创建非 root 用户防止文件在宿主机上创建时具有 root 权限 ARG PUID=1000 ENV PUID ${PUID} ARG PGID=1000 ENV PGID ${PGID} RUN set -xe; \ groupadd -g ${PGID} laradock && \ useradd -l -u ${PUID} -g laradock -m laradock -G docker_env && \ usermod -p "*" laradock -s /bin/bash 这段配置创建了一个非 root 用户 laradock,解决了容器和宿主机之间文件权限问题: ...