news 2026/4/23 13:16:03

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/23 13:09:18

探索Google Earth Pro:从3D浏览到历史影像

活动一&#xff1a;Google Earth Pro 应用指南 简介 Google Earth Pro&#xff08;简称 GEP&#xff09;是一款免费的桌面软件&#xff0c;能够查看大量免费提供的遥感影像和其他空间数据。GEP 拥有全球景观的近期和历史影像&#xff0c;使其成为一个强大的空间数据库。GEP 的影…

作者头像 李华
网站建设 2026/4/22 20:36:44

为什么顶尖C#开发者都在用不安全代码?真相竟然是…

第一章&#xff1a;为什么顶尖C#开发者都在用不安全代码&#xff1f;真相竟然是…在高性能计算、游戏引擎开发或底层系统编程中&#xff0c;越来越多的顶尖C#开发者选择启用不安全代码&#xff08;unsafe code&#xff09;。这并非出于炫技&#xff0c;而是为了突破托管环境的性…

作者头像 李华
网站建设 2026/4/21 15:03:28

ESP32实现大模型本地运行的实战案例

用ESP32跑大模型&#xff1f;边缘AI的极限挑战与实战突破 你有没有想过&#xff0c;一块不到2美元的ESP32开发板&#xff0c;也能“运行”像BERT、GPT这样的大语言模型&#xff1f; 听起来像是天方夜谭。毕竟&#xff0c;这些动辄上亿参数、需要GPU集群支撑的AI巨兽&#xff0…

作者头像 李华
网站建设 2026/4/21 11:14:58

PyQt5 实现 Windows EXE 程序在线更新(自动下载 + 覆盖升级)

一、前言 在使用 PyQt5 PyInstaller 开发 Windows 桌面工具时&#xff0c;一个非常现实的问题是&#xff1a;&#x1f449; 程序如何自动检测新版本&#xff0c;并完成在线升级&#xff1f;本文基于一个真实可用、已落地的更新方案&#xff0c;实现了&#xff1a; ✅ 远程版本…

作者头像 李华
网站建设 2026/4/18 9:22:11

VS Code调试.NET Core应用,90%开发者忽略的3个关键配置项

第一章&#xff1a;C# 跨平台调试配置概述在现代软件开发中&#xff0c;C# 不再局限于 Windows 平台&#xff0c;借助 .NET SDK 和 Visual Studio Code 等工具&#xff0c;开发者可以在 Linux、macOS 和 Windows 上实现一致的跨平台调试体验。合理配置调试环境是确保应用在不同…

作者头像 李华