
本教程详细指导如何使用docker和docker compose容器化laravel应用与postgresql数据库。内容涵盖dockerfile的编写,实现php-fpm、composer、node.js及php扩展的集成;以及docker-compose.yml的配置,定义laravel应用服务与postgresql数据库服务,并配置网络、数据持久化和环境变量。通过本教程,您将掌握构建、运行和管理容器化laravel应用的完整流程。
在现代Web开发中,Docker已成为部署和管理应用程序的强大工具。将Laravel应用与PostgreSQL数据库容器化,能够带来多重优势:
本教程将提供一个完整的解决方案,帮助您轻松地将Laravel应用与PostgreSQL数据库集成到Docker环境中。
Dockerfile是构建Docker镜像的蓝图,它包含了一系列指令,用于组装镜像层。以下是一个为Laravel应用优化的Dockerfile示例,它基于PHP-FPM镜像,并集成了必要的系统依赖、PHP扩展、Node.js和Composer。
# 使用官方PHP 7.4-FPM镜像作为基础
FROM php:7.4-fpm
# 设置工作目录
WORKDIR /app
# 安装系统依赖:
# git, curl: 版本控制和网络请求工具
# libpng-dev, libxml2-dev, libzip-dev: PHP图像处理、XML解析和Zip扩展所需
# zip, unzip: 压缩/解压缩工具
# vim: 文本编辑器 (可选,用于调试)
# postgresql-client, libpq-dev: PostgreSQL客户端工具和PHP PostgreSQL扩展所需
# python3, python3-pip: Python环境 (可选,如果您的Laravel应用需要执行Python脚本或数据科学工具)
RUN apt-get update && apt-get install -y \
git \
curl \
libpng-dev \
libxml2-dev \
libzip-dev \
zip \
unzip \
vim \
postgresql-client \
libpq-dev \
python3 \
python3-pip && \
# 创建Python3的软链接,使其可以通过'python'命令调用
ln -s /usr/bin/python3 /usr/bin/python
# 安装可选的Python包 (例如:用于数据科学)
# 如果您的应用不需要这些,可以移除此行
RUN pip3 install --no-cache-dir pandas scikit-learn numpy
# 安装PHP扩展:
# pdo_pgsql: PostgreSQL数据库驱动
# mbstring: 多字节字符串处理
# exif: 处理图像的EXIF数据
# pcntl: 进程控制 (通常用于Artisan命令或队列)
# bcmath: 任意精度数学
# gd: 图像处理 (需要libpng-dev等支持)
# zip: Zip文件处理
RUN docker-php-ext-install pdo_pgsql mbstring exif pcntl bcmath gd zip && \
# 启用gd和zip扩展
docker-php-ext-enable gd zip
# 安装Node.js和npm (用于Laravel Mix或前端资产编译)
# 这里安装Node.js 16.x版本
RUN curl -fsSL https://deb.nodesource.com/setup_16.x | bash - \
&& apt-get install -y nodejs
# 安装Composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
# 拷贝应用文件到容器
# 建议先拷贝 composer.json 和 composer.lock 以利用Docker缓存层,再安装依赖
# 但为了与原始答案保持一致,这里先执行依赖安装前的清理和更新
COPY . /app
# 安装Laravel依赖
# 清理 vendor 目录和 composer.lock 文件,然后更新并安装依赖
# 注意:在生产环境中,通常建议直接 `composer install --no-dev --optimize-autoloader`
# 以确保依赖版本一致且不包含开发依赖。此处的 `update` 操作可能导致版本不确定性。
RUN rm -rf vendor composer.lock && \
composer update && \
composer install --no-dev --optimize-autoloader
# 设置Laravel目录权限
# 确保 storage 和 bootstrap/cache 目录可写,并设置所有者为 www-data 用户
RUN chmod -R 775 storage bootstrap/cache && \
chown -R www-data:www-data /app
# 安装Node.js依赖 (如果您的Laravel应用使用前端框架如Vue/React,并通过npm管理)
RUN npm install
# 暴露PHP-FPM端口
EXPOSE 9000
# 启动PHP-FPM服务
# 注意:此CMD会被docker-compose.yml中的command指令覆盖,
# 在本教程中,我们将使用 `php artisan serve` 作为应用启动命令。
CMD ["php-fpm"]Dockerfile说明:
以上就是使用Docker容器化Laravel与PostgreSQL:完整教程的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号