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

news/2024/12/14 1:43:12/

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/news/1554903.html

相关文章

27. 聚类分析 - 使用R进行客户分群

实例背景: 聚类分析是一种无监督学习方法,用于根据数据的相似性将对象分组。在市场营销中,聚类分析常用于将客户分群,从而为不同的客户群体提供个性化的服务或营销策略。在R语言中,kmeans算法是最常用的聚类方法之一。…

QGroundControl之5-AppSettings.cc

介绍 应用程序设置 Application Settings ,这里看下语言选择功能,它是怎么和json文件关联起来的,刚刚看的时候,很是奇怪这么多的json文件作用。 1.AppSettings.cc 文件怎么和App.SettingsGroup.json关联 在AppSettings.cc文件没…

在AWS EMR上用Hive、Spark、Airflow构建一个高效的ETL程序

在AWS EMR(Elastic MapReduce)上构建一个高效的ETL程序,使用Hive作为数据仓库,Spark作为计算引擎,Airflow作为调度工具时,有几个关键的设计与实施方面需要注意。 在AWS EMR上构建高效的ETL程序,…

【Python】银联信用卡银行卡校验码计算

一、题目 出处:《Python程序设计基础(第 2 版)》,李东方等 主编,电子工业出版社,北京,2020年1月。 题目描述: 二、解答及解释 我们先编写一个例程,输入卡号的前15位&a…

【Vulkan入门】10-CreatePipeline

目录 先叨叨Git信息关键代码TestPipeline::Initialize() 编译运行 先叨叨 到上篇为止已经创建了FrameBuffer和RenderPass。建立Pipeline的先决条件已经具备。本篇就来创建Pipeline。 Git信息 repository: https://gitee.com/J8_series/easy-car-uitag: 10-CreatePipelineurl…

Converting circular structure to JSON

最近在项目中遇到了这个问题,头疼,弄了一下午才解决。做一个笔记吧。 1 Converting circular structure to JSON 我这个问题大致就是在使用pinia中出现了循环引用,意思是两个或多个模块、对象或依赖之间形成了相互依赖的链条。在使用 Pinia…

STM32 OLED屏幕驱动详解

一、介绍 OLED是有机发光二极管,又称为有机电激光显示(Organic Electroluminescence Display, OLED)。OLED由于同时具备自发光,不需背光源、对比度高、厚度薄、视角广、反应速度快、可用于挠曲性面板、使用温度范围广…

QT模型/视图结构:ListModel与TableModel

简介 模型/视图(model/view)结构是进行数据存储和界面展示的一种编程结构。此种方式将数据的存储与显示进行了解耦,视图组件显示模型中的数据,在视图组件里修改的数据会被自动保存到模型里。模型的数据来源可以是内存中的字符串列…