下载镜像
代码语言:javascript复制docker pull cytopia/php-fpm-5.6
docker pull mariadb
docker pull nginx
查看本地镜像
代码语言:javascript复制[root@linux /]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mariadb latest 7c1c380b0dd8 31 hours ago 407MB
nginx latest 2622e6cca7eb 4 weeks ago 132MB
cytopia/php-fpm-5.6 latest 2943ebf1ef81 2 years ago 1.1GB
自定义网络
创建一个lnmp专用网络
代码语言:javascript复制[root@linux /]# docker network create lnmp
[root@linux /]# docker network ls
NETWORK ID NAME DRIVER SCOPE
e517db42a8c9 bridge bridge local
af8272ab53c4 host host local
21930b09b6ae lnmp bridge local
81db32272f98 none null local
PHP-FPM部署
代码语言:javascript复制mkdir -p /docker/nginx/{www,html,www,conf,conf.d,log} docker run --name myphp-fpm -v /docker/nginx/www:/www --net lnmp -d cytopia/php-fpm-5.6
--name myphp-fpm : 将容器命名为 myphp-fpm。 -v /docker/nginx/www:/www : 将主机中项目的目录 www 挂载到容器的 /www
Nginx部署
代码语言:javascript复制vim /docker/nginx/conf.d/defaults.conf
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm index.php;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ [^/].php(/|$)
{
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /www/$fastcgi_script_name;
include fastcgi_params;
}
}
php:9000: 表示 php-fpm 服务的 URL. /www/: 是 myphp-fpm 中 php 文件的存储路径,映射到本地的 /docker/nginx/www 目录
启动nginx
代码语言:javascript复制docker run --name runoob-php-nginx -p 1000:80 -d -v /docker/nginx/www:/usr/share/nginx/html:ro -v /docker/nginx/conf.d:/etc/nginx/conf.d:ro --net lnmp nginx
-p 1000:80: 端口映射,把 nginx 中的 80 映射到本地的 1000 端口。 /docker/nginx/www: 是本地 html 文件的存储目录,/usr/share/nginx/html 是容器内 html 文件的存储目录。 /docker/nginx/conf/conf.d: 是本地 nginx 配置文件的存储目录,/etc/nginx/conf.d 是容器内 nginx 配置文件的存储目录。 --net lnmp 加入lnmp网络,并通过修改 nginx 的 /etc/hosts,把域名 php 映射成 php-fpm的IP,让 nginx 通过 php:9000 访问 php-fpm
接下来我们在 /docker/nginx/www 目录下创建 index.php
代码语言:javascript复制<?php
echo phpinfo();
?>
通过浏览器访问http://IP:1000测试php页面是否解析成功
mariadb部署
代码语言:javascript复制mkdir -p /docker/mariadb/data
docker run --name mariadb -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123 -v /docker/mariadb/data:/var/lib/mysql --net lnmp -d mariadb
MYSQL_ROOT_PASSWORD=123 配置数据库root用户的密码为123
进入mariadb容器,数据库设置远程连接
代码语言:javascript复制docker exec -it mariadb bash
mysql -uroot -p123
mysql> create database typecho; #创建数据库typecho
mysql> grant all privileges on *.* to 'root'@'%' identified by '123'; #为root添加远程连接的能力
mysql> flush privileges; #刷新
开始安装typecho
代码语言:javascript复制cd /docker/nginx/www #进入网站的根目录
wget http://typecho.org/downloads/1.1-17.10.30-release.tar.gz #下载typecho源码包
tar -xvzf 1.1-17.10.30-release.tar.gz #解压源码包
浏览器访问http://IP:1000/
这里显示需要手动在根目录创建config.inc.php文件
如果登录后台页面,输入正确用户名密码后提示access denied进不去的解决方法 进入PHP-FPM 容器修改/etc/php.ini文件内的cgi.fix_pathinfo = 0修改成cgi.fix_pathinfo = 1
代码语言:javascript复制docker exec -it myphp-fpm bash
vim /etc/php.ini
修改完成后重启PHP-FPM就能访问后台了