配置 MariaDB Docker 容器

为 Dockerfile 创建一个目录,用于创建 mariadb 容器。

JackLiu@docker-01:~/lamp-server$ mkdir -p mariadb/sql

创建一个 SQL 脚本来准备我们的示例表。

JackLiu@docker-01:~/lamp-server$ vi mariadb/sql/init-db.sql

在此文件中添加以下 SQL 语句。

USE testdb;
CREATE TABLE test (
        name varchar(30),
        email varchar(50)
);
INSERT INTO test (name, email)
VALUES
        ('JackLiu', 'JackLiu@onitroad.com'),
        ('Mansoor','mansoor@onitroad.com'),
        ('Tom','tom@onitroad.com');

创建一个 Dockerfile 来自定义我们的 mariadb 容器。

JackLiu@docker-01:~/lamp-server$ vi mariadb/Dockerfile

其中添加以下构建上下文。

FROM mariadb:10.5
ENV MYSQL_ROOT_PASSWORD 123
ENV MYSQL_USER JackLiu
ENV MYSQL_PASSWORD 123
ENV MYSQL_DATABASE testdb
COPY ./sql /docker-entrypoint-initdb.d/

在 Docker Host 上创建一个目录来存储 MariaDB Server 数据文件。

该目录将在容器启动时挂载在 mariadb 容器中。

JackLiu@docker-01:~/lamp-server$ mkdir mariadb_data

现在,在同一个 docker-compose.yml 文件中配置一个 MariaDB docker 容器。

JackLiu@docker-01:~/lamp-server$ vi docker-compose.yml

在此文件的“服务”部分下添加以下代码行。

mariadb:
         build:
              context: ./mariadb
         volumes:
              - ./mariadb_data:/var/lib/mysql

配置一个 PHP-Apache Docker 容器

登录到 Docker 主机 (docker-01.onitroad.com)。

创建一个目录来存储与我们的 LAMP 服务器相关的文件。

JackLiu@docker-01:~$ mkdir ~/lamp-server
JackLiu@docker-01:~$ cd ~/lamp-server/

创建一个目录,该目录将在 Apache 容器中作为 Apache 文档根目录挂载。
该目录用于部署我们的 PHP 应用程序,php-apache 容器将为我们的 Web 应用程序提供给客户端。

JackLiu@docker-01:~/lamp-server$ mkdir ~/lamp-server/html

在此目录中创建一个 php 页面:

JackLiu@docker-01:~/lamp-server$ echo "<?php phpinfo(); ?>" > ~/lamp-server/html/index.php

我们需要在 php-apache 容器上安装一些另外的 PHP 插件。
为此,我们必须为我们的 php-apache 容器创建构建上下文文件。

创建一个目录来保存 php-apache 构建上下文。

JackLiu@docker-01:~/lamp-server$ mkdir php-apache

为 php-apache 容器创建构建上下文文件。

JackLiu@docker-01:~/lamp-server$ vi php-apache/Dockerfile

在文件中,添加以下指令。

FROM php:7.4-apache
RUN docker-php-ext-install pdo pdo_mysql mysqli

由于我们正在部署一个多容器 Docker 应用程序,因此,我们需要使用 docker-compose 来创建和执行我们的容器。

为此,我们需要创建 docker-compose.yml 文件,其中包含创建容器的指令。

JackLiu@docker-01:~/lamp-server$ vi docker-compose.yml

并添加以下指令来创建 php-apache 容器。

version: '3'
services:
        php-apache:
                build:
                        context: ./php-apache
                ports:
                        - 80:80
                volumes:
                        - ./html:/var/www/html
                links:
                        - 'mariadb'
在 Docker 容器中配置 LAMP 堆栈

将 PHP 应用程序与 MariaDB 数据库连接

修改php代码,连接到MariaDB 数据库

JackLiu@docker-01:~/lamp-server$ vi html/index.php

在此文件中添加以下 HTML 代码。

<html>
   <head>
      <title>Fetching Data from MariaDB Server</title>
   </head>
   <body>
        <style>
        td,th {
        border: solid black 1px;
        font-size: 30px;
        width: 200px;
        }
        </style>
        <table>
        <tr>
        <th>Name</th>
        <th>Email</th>
        </tr>
      <?php
         $dbhost = "mariadb";
         $dbuser = "JackLiu";
         $dbpass = "123";
         $db = "testdb";
         $dbconn = mysqli_connect($dbhost, $dbuser, $dbpass, $db);
         if(! $dbconn ) {
            die('Could not connect: ' . mysql_error());
         }
         $query = mysqli_query($dbconn, "SELECT * FROM test")
            or die (mysqli_error($dbconn));
         while ($row = mysqli_fetch_array($query)) {
            echo
                "<tr>
                <td>{$row['name']}</td>
                <td>{$row['email']}</td>
                </tr>";
         }
         mysqli_close($dbconn);
      ?>
   </body>
</html>

在浏览器中打开 URL http://docker-01.onitroad.com。

我们可以看到数据库中的数据。

之路 on it Road.com

在 Docker 容器中运行 LAMP 堆栈

使用 docker-compose 命令启动我们的 LAMP 堆栈环境。

JackLiu@docker-01:~/lamp-server$ sudo docker-compose up

在浏览器中打开 URL http://docker-01.onitroad.com。

日期:2020-09-17 00:16:26 来源:oir作者:oir