news 2026/4/16 1:24:54

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/4/16 9:18:37

太原代写标书机构

太原代写标书机构&#xff1a;专业服务助力项目成功引言在激烈的市场竞争中&#xff0c;一份高质量的标书是企业中标的关键。太原作为山西省的省会城市&#xff0c;拥有众多优质的代写标书机构&#xff0c;为企业提供专业的标书编写服务。本文将深入探讨太原代写标书机构的服务…

作者头像 李华
网站建设 2026/4/15 13:18:18

人物静止镜头更适合HeyGem处理?动态画面适配分析

人物静止镜头更适合HeyGem处理&#xff1f;动态画面适配分析 在虚拟主播、企业宣传和在线教育日益依赖数字人内容的今天&#xff0c;AI驱动的口型同步技术正以前所未有的速度改变视频生产方式。像 HeyGem 这样的语音驱动数字人生成系统&#xff0c;让用户只需一段音频和一张人…

作者头像 李华
网站建设 2026/4/15 10:10:04

【2025最新】基于SpringBoot+Vue的志愿服务管理系统管理系统源码+MyBatis+MySQL

摘要 随着社会公益事业的快速发展&#xff0c;志愿服务管理的信息化需求日益增长。传统志愿服务管理模式依赖人工记录和纸质档案&#xff0c;存在效率低下、数据易丢失、信息共享困难等问题。数字化管理系统的引入能够有效提升志愿服务的组织效率&#xff0c;实现志愿者、活动、…

作者头像 李华
网站建设 2026/4/16 10:46:53

Java SpringBoot+Vue3+MyBatis 智慧草莓基地管理系统系统源码|前后端分离+MySQL数据库

摘要 随着现代农业技术的快速发展&#xff0c;智慧农业成为提升农业生产效率和管理水平的重要方向。草莓种植作为高附加值农业产业&#xff0c;对环境和管理的精细化要求较高&#xff0c;传统的人工管理模式难以满足现代草莓基地的需求。智慧草莓基地管理系统通过信息化手段整合…

作者头像 李华
网站建设 2026/4/16 10:42:17

【C# Span性能优化终极指南】:揭秘高效内存管理的5大核心技巧

第一章&#xff1a;C# Span性能优化概述在高性能编程场景中&#xff0c;数据的高效访问与内存管理是关键瓶颈。C# 中的 Span 类型为栈和托管堆上的连续内存提供了统一、安全且无额外开销的抽象&#xff0c;极大提升了处理字符串、数组和原生内存时的性能表现。Span的核心优势 避…

作者头像 李华
网站建设 2026/4/2 1:30:41

基于java+ vue小区物业管理系统(源码+数据库+文档)

小区物业管理 目录 基于springboot vue小区物业管理系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 基于springboot vue小区物业管理系统 一、前言 博主介绍&…

作者头像 李华