随着云计算技术的飞速发展,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 提供了非常便利与简单的集成方案。