LEMP(Linux、Nginx、MariaDB、PHP)堆栈 Docker 镜像部署
关于
自动构建 docker LEMP
映像“linuxconfig/lemp”可用作动态 PHP 应用程序的测试和生产环境。它由 Debian GNU/Linux、轻量级但功能强大的 Nginx 网络服务器、MariaDB 关系数据库管理系统和 PHP 脚本语言组成。
部署
“linuxconfig/lemp”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/lemp”docker 镜像:
$ sudo docker run --name=lemp -dP -v $PWD/html:/var/www/html linuxconfig/lemp
fa3be4d751519fe5e28b022f571b18a79025a7db35865d1de46e161067e99bd9
通过执行上述命令,我们创建并启动了一个新的 docker 容器 lemp
。同时我们也将我们的网站开发目录html
挂载为nginx的根目录。 MariaDB 和 Nginx 端口现在都绑定到主机系统的随机端口。现在,这两个本地端口都可以用于访问 MariaDB 和 Nginx 服务:
$ sudo docker port lemp
80/tcp -> 0.0.0.0:49156
3306/tcp -> 0.0.0.0:49155
Nginx 访问
在此阶段,Nginx Web 服务器和我们的网站可以通过 $sudo docker port Lemp 命令指定的端口进行访问。使用命令行或浏览器导航到 http://localhost:49156
URL:
$ curl -i http://localhost:49156
HTTP/1.1 200 OK
Server: nginx/1.6.2
Date: Sun, 10 May 2015 01:12:08 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Connected successfully to MariaDB database
MariaDB 访问
MariaDB 数据库可以通过 admin
用户和默认密码 pass
访问。与之前一样,首先我们需要使用 $sudo docker port lemp 命令获取 docker 镜像中链接到 MariaDB 数据库的主机系统端口号。接下来,我们可以连接数据库:
mysql -uadmin -ppass -h 127.0.0.1 -P49155
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 10.1.23-MariaDB-8 Debian 9.0
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
附加信息
重置 MariaDB 用户密码
以下命令将为admin
用户设置新密码123
:
SET PASSWORD FOR 'admin'@'%' = PASSWORD('123');
重新启动lemp堆栈
$ sudo docker exec lemp service supervisor restart
集装箱存取
当您的 lemp
容器正在运行时,可以通过以下方式访问它:
$ sudo docker exec -it lemp /bin/bash
root@733ae4bebf83:/#