使用Docker容器化Laravel与PostgreSQL:完整教程

花韻仙語
发布: 2025-12-04 12:09:25
原创
744人浏览过

使用Docker容器化Laravel与PostgreSQL:完整教程

本教程详细指导如何使用docker和docker compose容器化laravel应用与postgresql数据库。内容涵盖dockerfile的编写,实现php-fpm、composer、node.js及php扩展的集成;以及docker-compose.yml的配置,定义laravel应用服务与postgresql数据库服务,并配置网络、数据持久化和环境变量。通过本教程,您将掌握构建、运行和管理容器化laravel应用的完整流程。

引言:Docker化Laravel与PostgreSQL的优势

在现代Web开发中,Docker已成为部署和管理应用程序的强大工具。将Laravel应用与PostgreSQL数据库容器化,能够带来多重优势:

  • 环境一致性: 确保开发、测试和生产环境的一致性,避免“在我机器上能跑”的问题。
  • 快速部署: 简化应用的部署流程,通过Docker Compose一键启动所有服务。
  • 资源隔离: 每个服务运行在独立的容器中,互不影响,提升系统稳定性。
  • 可移植性: 容器化的应用可以在任何支持Docker的平台上运行,便于迁移。
  • 版本控制: Dockerfile和docker-compose.yml文件可以像代码一样进行版本控制,追踪环境变化。

本教程将提供一个完整的解决方案,帮助您轻松地将Laravel应用与PostgreSQL数据库集成到Docker环境中。

一、构建Laravel应用容器:Dockerfile详解

Dockerfile是构建Docker镜像的蓝图,它包含了一系列指令,用于组装镜像层。以下是一个为Laravel应用优化的Dockerfile示例,它基于PHP-FPM镜像,并集成了必要的系统依赖、PHP扩展、Node.js和Composer。

蚂蚁PPT
蚂蚁PPT

AI在线智能生成PPT

蚂蚁PPT 113
查看详情 蚂蚁PPT
# 使用官方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说明:

  • FROM php:7.4-fpm: 选择了PHP 7.4 FPM版本作为基础镜像。FPM(FastCGI Process Manager)是PHP处理Web请求的推荐方式,通常与Nginx等Web服务器配合使用。

以上就是使用Docker容器化Laravel与PostgreSQL:完整教程的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号