配置 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'
将 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。
我们可以看到数据库中的数据。
在 Docker 容器中运行 LAMP 堆栈
使用 docker-compose 命令启动我们的 LAMP 堆栈环境。
JackLiu@docker-01:~/lamp-server$ sudo docker-compose up
在浏览器中打开 URL http://docker-01.onitroad.com。