LAMP(Linux、Apache、MariaDB、PHP)堆栈 Docker 镜像部署
关于
自动构建 docker LAMP
映像“linuxconfig/lamp”可用作动态 PHP 应用程序的测试和生产环境。它由 Debian GNU/Linux、Apache 网络服务器、社区开发的 MySQL 关系数据库管理系统分支 MariaDB 和 PHP 脚本语言组成。
部署
“linuxconfig/lamp”docker 镜像的部署是一个相当简单的过程。让我们首先创建一个带有 MariaDB 连接句柄的示例 PHP 网站:
<?php
$dbh = mysqli_connect('localhost', 'admin', 'pass');
if (!$dbh) {
die('Could not connect: ' . mysqli_error());
}
echo 'Connected successfully to MariaDB database';
mysqli_close($dbh);
?>
将上述代码保存到 index.php
文件和新的 html
目录中。或者,html
目录可能包含您所需的 PHP 应用程序:
$ mkdir html
$ vi html/index.php
$ ls html/
index.php
在此阶段,我们准备部署“linuxconfig/lamp”docker 镜像:
$ sudo docker run --name=lamp -dP -v $PWD/html:/var/www/html linuxconfig/lamp
c2d1687aef21f8a12a7fbb31bf8cf71c1e5adabf381bc6d70e8804c6663f0bc0
通过执行上述命令,我们创建并启动了一个名为 lamp
的新 docker 容器。同时我们也将我们的网站开发目录html
挂载为apache的根目录。 MariaDB 和 Apache 端口现在都绑定到主机系统的随机端口。现在,这两个本地端口都可以用于访问 MariaDB 和 Apache 服务:
$ sudo docker port lamp
80/tcp -> 0.0.0.0:49156
3306/tcp -> 0.0.0.0:49155
阿帕奇访问
在此阶段,Nginx Web 服务器和我们的网站可以通过 $sudo docker port lamp
命令指定的端口进行访问。使用命令行或浏览器导航到 http://localhost:49156
URL:
$ curl -i http://localhost:49156
HTTP/1.1 200 OK
Date: Thu, 21 May 2015 00:39:52 GMT
Server: Apache/2.4.10 (Debian)
Set-Cookie: 6b690bb29883a1fb2d50e5547712a052=5qdo9u7m32e64jncjb7v30p8k3; path=/; HttpOnly
Expires: Mon, 1 Jan 2001 00:00:00 GMT
Last-Modified: Thu, 21 May 2015 00:39:52 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Vary: Accept-Encoding
Transfer-Encoding: chunked
Content-Type: text/html; charset=utf-8
Connected successfully to MariaDB database
MariaDB(MySQL)访问
MariaDB 数据库可以通过 admin
用户和默认密码 pass
访问。和之前一样,首先我们需要使用 $sudo docker port lamp 来获取 docker 镜像中链接到 MariaDB 数据库的主机系统端口号。接下来,我们可以连接数据库:
mysql -uadmin -ppass -h 127.0.0.1 -P49155
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.5.43-0+deb8u1 (Debian)
Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MySQL [(none)]>
附加信息
重置 MariaDB 用户密码
以下命令将为admin
用户设置新密码123
:
SET PASSWORD FOR 'admin'@'%' = PASSWORD('123');
重新启动灯组
$ sudo docker exec lamp service supervisor restart
集装箱存取
当您的 lamp
容器正在运行时,可以通过以下方式访问它:
$ sudo docker exec -it lamp /bin/bash
root@733ae4bebf83:/#