如何使用 Docker Compose 创建 LAMP 环境 ?

ops/2024/12/16 18:57:15/

Setting Up LAMP Stack with Docker Compose

现如今,通过 Docker 容器化部署环境已经逐渐成为主流,特别是在部署像 LAMP (Linux、Apache、MySQL、PHP) 这样的复杂环境时。本教程旨在带您完成使用 Docker-Compose 建立 LAMP 环境的整个过程,同时还包括定制 PHP 环境的步骤,安装额外的模块和 PHP Composer 包管理器。

必备条件

  • Docker : 用于在容器中开发、交付和运行应用程序的平台。
  • Docker-Compose : 用于定义和运行多容器 Docker 应用程序的工具。

您可以通过在终端中运行 docker -vdocker-compose -v 来检查这些工具的安装。如果您还没有安装它们,请访问 Docker 官方网站获取安装说明。

Step 1: Create a Docker-Compose File

首先,在项目目录中创建一个 docker-compose.yml 文件,此文件至关重要。

version: '3'
services:web:build: .container_name: apache-phpports:- "80:80"volumes:- ./www:/var/www/htmldb:image: mysql:8container_name: mysql-servercommand: --default-authentication-plugin=mysql_native_passwordrestart: alwaysenvironment:MYSQL_ROOT_PASSWORD: secure_passwordMYSQL_DATABASE: mydbMYSQL_USER: myuserMYSQL_PASSWORD: passwordports:- "3306:3306"volumes:- db_data:/var/lib/mysql
volumes:db_data:

该配置详细说明了两个主要服务:web 用于 Apache 和 PHP, db 用于 MySQL。注意 web 下的 build: . 指令,指示 Docker 应该在当前目录下使用一个 Dockerfile 来构建这个服务。

Step 2: Customize PHP with a Dockerfile

要合并其他 PHP 模块和 Composer,请在与 docker-composer .yml 相同的目录下创建一个 Dockerfile。这个 Dockerfile 将指导 Docker 如何准备你的自定义 PHP 环境。

dockerfile">FROM php:8.3-apache# Install additional PHP modules
RUN docker-php-ext-install pdo_mysql mysqli# Install Composer
RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" && \php composer-setup.php --install-dir=/usr/local/bin --filename=composer && \php -r "unlink('composer-setup.php');"# Enable Apache mod_rewrite
RUN a2enmod rewrite

这个 Dockerfile 扩展了 php:8.3-apache 镜像,为数据库交互添加了 pdo mysql 和 mysqli 扩展,并全局安装了 Composer 管理器。

Step 3: Building and Running Your Containers

打开终端,切换到 docker-compose.yml 所在的项目目录,执行如下命令

docker-compose up -d

'-d 选项以分离模式运行容器,释放终端。Docker-compose 将从 Docker Hub 提取必要的镜像,创建定义的服务,并设置指定的网络和数据卷。

Step 4: Accessing Your LAMP Stack

容器启动并运行后,您可以通过在浏览器中访问 http//localhost 来访问 Apache Web 服务。

要与 MySQL 数据库交互,可以使用以下命令访问 MySQL 命令行

docker-compose exec db mysql -uroot -proot

请用您在 docker-compose.yml 文件中定义的用户名和密码替换 root。

Step 5: Managing Your LAMP Stack

Docker-Compose 服务管理常见命令如下:

我的开源项目

酷瓜云课堂-在线教育解决方案

  • course-tencent-cloud(酷瓜云课堂 - gitee仓库)
  • course-tencent-cloud(酷瓜云课堂 - github仓库)

http://www.ppmy.cn/ops/142439.html

相关文章

密码学——密码学概述、分类、加密技术(山东省大数据职称考试)

大数据分析应用-初级 第一部分 基础知识 一、大数据法律法规、政策文件、相关标准 二、计算机基础知识 三、信息化基础知识 四、密码学 五、大数据安全 六、数据库系统 七、数据仓库. 第二部分 专业知识 一、大数据技术与应用 二、大数据分析模型 三、数据科学 密码学 大数据…

⭐Redis - 手动实现分布式锁 Redisson 的使用

概述 定义:分布式系统或集群模式下,多进程或多节点之间 “可见” 并且 “互斥” 的锁机制 功能:确保同一时刻只有一个进程或节点能够获取某项资源的访问权 特点 互斥高可用多进程可见高并发 (高性能)安全性 (避免死锁问题) 常见的分布式锁 …

Flutter 桌面端串口配置

前言 我使用flutter_libserialport包在macOS中实现串口通信的功能,可以实现数据收发,但是收到的内容是乱码。这种情况一般都是由于波特率和硬件设备不一致导致的。 配置串口配置 1.打开串口读写 import package:flutter_libserialport/flutter_libser…

爬虫基础知识点

最近看了看爬虫相关知识点,做了记录,具体代码放到了仓库,本文仅学习使用,如有违规请联系博主删除。 这个流程图是我使用在线AI工具infography生成的,这个网站可以根据url或者文本等数据自动生成流程图,挺…

Spring WebFlux 和 Reactor关系

Spring WebFlux 和 Reactor 是紧密相关的,Spring WebFlux 基于 Reactor 构建,两者共同推动了响应式编程在 Java 开发中的应用。以下是它们的具体关系和分工: 1. Reactor: 响应式编程核心库 Reactor 是一个响应式编程库,实现了Rea…

elasticsearch 使用预处理将JSON类型转换成Object类型

文章目录 使用 Ingest Pipeline 和 json 处理器示例:使用Ingest Pipeline 写入数据使用该Pipeline 在Elasticsearch(ES)中,您可以使用“预处理”(通常是通过处理器、Ingest Pipeline等方式)将JSON类型的数据…

设计模式学习之——适配器模式

适配器模式(Adapter Pattern),又称作变压器模式(因为这两者都体现了“转换”或“适配”的核心概念),是一种结构型设计模式。它将一个类的接口转换成客户端所期望的另一种接口,从而使得原本因接口…

解析UnityEditor.TransformWorldPlacementJSON数据

Unity拷贝运行时数据的世界Trans信息可以得到json数据,稍微改装一下就可以得到对象数据了(没找到官方对应的接口,如果有知道的可以评论区留言),如下图: 代码如下: [MenuItem("Assets/解析…