news 2026/5/16 15:17:53

HoRain云--Dockerfile快速搭建LAMP环境指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
HoRain云--Dockerfile快速搭建LAMP环境指南

🎬 HoRain云小助手:个人主页

🔥 个人专栏: 《Linux 系列教程》《c语言教程》

⛺️生活的理想,就是为了理想的生活!


⛳️ 推荐

前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。

专栏介绍

专栏名称

专栏介绍

《C语言》

本专栏主要撰写C干货内容和编程技巧,让大家从底层了解C,把更多的知识由抽象到简单通俗易懂。

《网络协议》

本专栏主要是注重从底层来给大家一步步剖析网络协议的奥秘,一起解密网络协议在运行中协议的基本运行机制!

《docker容器精解篇》

全面深入解析 docker 容器,从基础到进阶,涵盖原理、操作、实践案例,助您精通 docker。

《linux系列》

本专栏主要撰写Linux干货内容,从基础到进阶,知识由抽象到简单通俗易懂,帮你从新手小白到扫地僧。

《python 系列》

本专栏着重撰写Python相关的干货内容与编程技巧,助力大家从底层去认识Python,将更多复杂的知识由抽象转化为简单易懂的内容。

《试题库》

本专栏主要是发布一些考试和练习题库(涵盖软考、HCIE、HRCE、CCNA等)

目录

⛳️ 推荐

专栏介绍

Dockerfile制作镜像与搭建LAMP环境

一、LAMP环境概述

二、搭建LAMP环境的两种主要方式

1. 单容器方案(Dockerfile实现)

步骤

2. 多容器方案(Docker Compose实现)

步骤

三、关键注意事项

1. 数据库分离原则

2. 数据持久化

3. PHP扩展选择

4. 环境变量管理

四、常用操作命令

五、生产环境优化建议

六、与传统方式对比

七、示例:完整LAMP环境搭建

结论


Dockerfile制作镜像与搭建LAMP环境

LAMP环境(Linux + Apache + MySQL + PHP)是Web开发中常用的环境组合。使用Docker可以快速、一致地搭建LAMP环境,避免了传统手动安装的繁琐过程和环境差异问题。下面详细介绍如何使用Dockerfile制作镜像并搭建LAMP环境。

一、LAMP环境概述

LAMP代表:

二、搭建LAMP环境的两种主要方式

1. 单容器方案(Dockerfile实现)

步骤
  1. 创建项目目录结构

    mkdir lamp-docker && cd lamp-docker mkdir src # 存放PHP网站代码
  2. 编写Dockerfile

    # 使用官方PHP镜像(含Apache) FROM php:7.4-apache # 安装依赖和PHP扩展 RUN apt-get update && apt-get install -y \ libpng-dev \ libzip-dev \ mariadb-client \ && docker-php-ext-install mysqli pdo pdo_mysql gd zip # 启用Apache重写模块 RUN a2enmod rewrite # 复制网站代码到容器 COPY src/ /var/www/html/ # 调整目录权限(根据需求可选) RUN chown -R www-data:www-data /var/www/html # 暴露端口 EXPOSE 80 # 启动Apache服务 CMD ["apache2-foreground"]
  3. 构建镜像

    docker build -t my-lamp-app .
  4. 运行容器

    docker run -d -p 80:80 --name my-lamp my-lamp-app

2. 多容器方案(Docker Compose实现)

步骤
  1. 编写docker-compose.yml

    version: '3' services: web: build: . ports: - "80:80" volumes: - ./src:/var/www/html # 挂载代码目录(开发环境) depends_on: - db environment: MYSQL_HOST: db MYSQL_USER: root MYSQL_PASSWORD: example db: image: mariadb:10.5 environment: MYSQL_ROOT_PASSWORD: example MYSQL_DATABASE: myapp volumes: - mysql_data:/var/lib/mysql # 持久化数据库 volumes: mysql_data:
  2. 修改Dockerfile(优化版)

    FROM php:8.2-apache RUN apt update && apt install -y \ git \ unzip \ libicu-dev \ libzip-dev \ && docker-php-ext-install intl pdo_mysql zip RUN a2enmod rewrite COPY ./config/vhost.conf /etc/apache2/sites-available/000-default.conf
  3. 创建Apache虚拟主机配置(可选)

    # config/vhost.conf <VirtualHost *:80> DocumentRoot /var/www/html/public <Directory /var/www/html/public> AllowOverride All Require all granted </Directory> </VirtualHost>
  4. 构建并启动

    docker-compose up -d --build

三、关键注意事项

1. 数据库分离原则

2. 数据持久化

3. PHP扩展选择

4. 环境变量管理

在PHP代码中通过getenv()获取:

$db_host = getenv('MYSQL_HOST');

四、常用操作命令

命令说明
docker-compose up -d --build构建并启动
docker-compose logs -f web查看日志
docker exec -it my-lamp bash进入容器
docker exec db sh -c 'exec mysqldump -uroot -p"$MYSQL_ROOT_PASSWORD" myapp' > backup.sql数据库备份

五、生产环境优化建议

  1. 架构优化:使用php:fpm+nginx镜像分离Web服务器
  2. 性能提升:配置opcacheAPCu提升PHP性能
  3. 安全加固:实现HTTPS支持(Let's Encrypt)
  4. 资源管理:设置CPU/Memory资源限制
  5. 文件排除:使用.dockerignore排除无关文件

六、与传统方式对比

项目传统方式Docker方式
环境一致性依赖手动安装,易出错通过Dockerfile定义,环境一致
部署速度慢,需手动安装所有组件快速,一键部署
版本管理难以管理不同版本通过Docker镜像标签轻松管理
依赖问题易出现依赖冲突容器化隔离,无依赖冲突
迁移性难以迁移任何支持Docker的环境均可运行

七、示例:完整LAMP环境搭建

# 创建项目结构 mkdir lamp-docker && cd lamp-docker mkdir src # 编写Dockerfile cat > Dockerfile << EOF FROM php:8.2-apache RUN apt update && apt install -y \ git \ unzip \ libicu-dev \ libzip-dev \ && docker-php-ext-install intl pdo_mysql zip RUN a2enmod rewrite COPY ./config/vhost.conf /etc/apache2/sites-available/000-default.conf COPY src/ /var/www/html/ EXPOSE 80 CMD ["apache2-foreground"] EOF # 创建虚拟主机配置 mkdir -p config cat > config/vhost.conf << EOF <VirtualHost *:80> DocumentRoot /var/www/html <Directory /var/www/html> AllowOverride All Require all granted </Directory> </VirtualHost> EOF # 创建测试文件 echo "<?php phpinfo(); ?>" > src/index.php # 构建和运行 docker build -t my-lamp . docker run -d -p 80:80 --name my-lamp my-lamp

访问http://localhost即可看到PHP信息页面,表示LAMP环境已成功搭建。

结论

使用Dockerfile制作LAMP环境是现代Web开发的推荐方式,它简化了环境搭建过程,提高了环境一致性,并使开发、测试和生产环境更加一致。无论是单容器方案还是多容器方案,都能根据项目需求灵活选择。通过Docker,您可以轻松地将LAMP环境部署到任何支持Docker的平台上,实现"一次构建,处处运行"的目标。

❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/8 22:39:56

音频采样率不一致导致HeyGem处理异常?统一为44.1kHz

音频采样率不一致导致HeyGem处理异常&#xff1f;统一为44.1kHz 在AI数字人视频生成的应用场景中&#xff0c;一个看似微不足道的技术细节——音频采样率&#xff0c;常常成为决定任务成败的关键。不少用户反馈&#xff1a;上传的音频明明能播放、内容清晰&#xff0c;为何HeyG…

作者头像 李华
网站建设 2026/5/14 12:38:28

吐血推荐10个AI论文平台,本科生轻松搞定毕业论文!

吐血推荐10个AI论文平台&#xff0c;本科生轻松搞定毕业论文&#xff01; AI 工具如何助力论文写作&#xff1f; 在当今信息爆炸的时代&#xff0c;本科生撰写毕业论文早已不再是单打独斗的挑战。借助 AI 工具&#xff0c;不仅可以大幅提高效率&#xff0c;还能有效降低 AIGC&a…

作者头像 李华
网站建设 2026/5/12 12:53:13

虚拟环境激活命令source activate无效?修正Shell语法

虚拟环境激活命令 source activate 无效&#xff1f;修正 Shell 语法 在部署一个 AI 视频生成系统时&#xff0c;你是否曾遇到这样的场景&#xff1a;一切代码准备就绪&#xff0c;启动脚本也写好了&#xff0c;可一运行却报出 ModuleNotFoundError——明明安装过的 gradio 或 …

作者头像 李华
网站建设 2026/5/14 17:21:05

低成本GPU推荐:适合运行HeyGem的显卡型号榜单

低成本GPU推荐&#xff1a;适合运行HeyGem的显卡型号榜单 在AI数字人技术加速落地的今天&#xff0c;越来越多的企业和个人开始尝试自动化视频内容生成。像HeyGem这样的本地化AI数字人系统&#xff0c;凭借其语音驱动口型同步、批量处理和WebUI交互能力&#xff0c;正被广泛应用…

作者头像 李华