淘先锋技术网

首页 1 2 3 4 5 6 7

随着云计算技术的飞速发展,Docker已经成为了每一个程序员熟知并在真实项目中经常使用的一种工具。一般而言,Docker 均会配套使用 MySQL, PHP 这些主流的编程语言,并且,在实际操作和开发过程中,将它们进行整合时都是相对的简单快捷。

PHP 这种语言被广泛应用于Web后端编程,而 MySQL 数据库则基本上是这类Web后端程序的数据存储终端。因此,在实际开发中,它们的整合也就成为了至关重要的一环。Docker 提供了完美的集成环境,使得PHP和MySQL 可以一起运行。同时,Docker提供了一种轻便而可搬移的方式来将环境打包成Docker镜像、来和任何开发环境和存在周期部署环境。

在安装Docker之后,若需要将 PHP 和 MySQL 完美集成,就需要将以下的步骤完成,创建好一个以 `php.ini ` 为基础的 `Dockerfile` 镜像文件:

FROM php:7.3.2-apache
RUN docker-php-ext-install mysqli && docker-php-ext-enable mysqli
RUN echo "" >>/var/www/html/index.php
EXPOSE 80

上面的代码,也概述了整个 PHP 和 MySQL 集成的过程。首先,采用的是 Apache 所支持的 php:7.3.2-apache 基础镜像。再由docker-php-ext-install 安装 MySQL 客户端,并由docker-php-ext-enable开启 mysqli 扩展。最后,将 PHP 的默认启动文件 index.php 控制台输出 PHP 信息,这样在尝试访问容器内服务器时,知道 PHP 运行环境、扩展、参数等重要信息。

由上述基础镜像生成的 PHP 环境镜像是可以连接 MySQL 数据库的。下面,对下面的 `Docker Compose` 进行一定的说明:

version: '2'
services:
mariadb:
image: mariadb:latest
volumes:
- "./mariadb_data:/var/lib/mysql"
restart: always
environment:
MYSQL_ROOT_PASSWORD: "qwer1234"
MYSQL_USER: "test"
MYSQL_PASSWORD: "qwer5678"
MYSQL_DATABASE: "wordpress"
apache:
build:
context: .
ports:
- "8080:80"
volumes:
- "./src:/var/www/html"
depends_on:
- mariadb

容器服务中采用了 `MariaDB` 镜像作为数据库,同时创建了两个服务,一个是 `mariadb`,另外一个是 `apache`。数据库在 `mariadb` 中和 `apache` 共享数据卷,数据卷路径为 `./mariadb_data:/var/lib/mysql`。web服务器很自然地就在 `apache` 中了,采用的源自的镜像为通过Dockerfile定义并生成的 `docker-php7-apache` 镜像。访问 `http://localhost:8080/` 就可以进入到PHP应用的首页。或者采用直接访问 `http://localhost:8080/php7info/index.php` 的形式,访问docker内 PHP 应用的 phpinfo() 输出的 PHP 信息。

小结:Docker 是一个优秀又灵活的工具,可以帮助我们快速、正确的部署网站所需的环境,同时提供了我们一个良好的开发环境。在 PHP 和 MySQL 的整合中,Docker 提供了非常便利与简单的集成方案。