现如今,通过 Docker 容器化部署环境已经逐渐成为主流,特别是在部署像 LAMP (Linux、Apache、MySQL、PHP) 这样的复杂环境时。本教程旨在带您完成使用 Docker-Compose 建立 LAMP 环境的整个过程,同时还包括定制 PHP 环境的步骤,安装额外的模块和 PHP Composer 包管理器。
必备条件
- Docker : 用于在容器中开发、交付和运行应用程序的平台。
- Docker-Compose : 用于定义和运行多容器 Docker 应用程序的工具。
您可以通过在终端中运行 docker -v
和 docker-compose -v
来检查这些工具的安装。如果您还没有安装它们,请访问 Docker 官方网站获取安装说明。
Step 1: Create a Docker-Compose File
首先,在项目目录中创建一个 docker-compose.yml 文件,此文件至关重要。
version: '3'
services:
web:
build: .
container_name: apache-php
ports:
- "80:80"
volumes:
- ./www:/var/www/html
db:
image: mysql:8
container_name: mysql-server
command: --default-authentication-plugin=mysql_native_password
restart: always
environment:
MYSQL_ROOT_PASSWORD: secure_password
MYSQL_DATABASE: mydb
MYSQL_USER: myuser
MYSQL_PASSWORD: password
ports:
- "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 环境。
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 服务管理常见命令如下:
- 停止容器:
docker-compose down
- 重启容器:
docker-compose up -d
- 重构服务:
docker-compose up -d --build
我的开源项目
- course-tencent-cloud(酷瓜云课堂 - gitee仓库)
- course-tencent-cloud(酷瓜云课堂 - github仓库)