docker 配置lnmp环境

最近经常看到docker这个名词,然后好奇心害死猫,查询了下这是一个什么东西。原来这是一个类似虚拟的鬼东西,但是更加轻量。昨天双十一趁着阿里云5折,购买了一台服务器。原来的服务器并没有过期,还有将近一个月吧,然后想着反正不弄什么,折腾一下docker这个鬼玩意。

没想到这一折腾就一发不可收拾了,感觉一下逼格就提高了,这个建一个环境几行代码就搞定了,就比如搭建一个php5.6环境

docker run --name php5.6 -d -v /home/wwwroot:/var/www/html:ro php:5.6.27-fpm

不用经过繁琐的编译等操作。php环境就建立好了,不想要直接删除这个就可以了 docker rm php5.6 ,或者想建立一个其他版本的只要改动几下就可以了。简直大爱docker

docker逼格这么高当然得给自己的站配上,经过一番搜索搭建lnmp环境,想法是一个应用运行一个容器 linux nginx mariadb/mysql php。

PHP

docker run --name php5.6 -d -v /home/wwwroot:/var/www/html php:5.6.27-fpm

--name 容器名字
-v 挂载本地目录,/home/wwwroot 挂载在容器/var/www/html目录
这个php是默认不带mysql扩展的,需要自己安装

docker exec -it php5.6 bash

进入容器中,这个容器自带一个命令docker-php-ext-install
可以通过这个命令安装扩展

docker-php-ext-install pdo_mysql

nginx

docker run --name nginx -p 80:80 -p 443:443 \
-v /home/Dockers/nginx/logs:/var/log/nginx \
-v /home/Dockers/nginx/vhost:/etc/nginx/vhost:ro \
-v /home/wwwroot:/wwwroot \
-v /home/Dockers/nginx/nginx.conf:/etc/nginx/nginx.conf:ro \
--link php5.6:php5.6 -d nginx

--link 容器与容器之间连接
nginx 配置文件挂载本地,方便以后修改,不知默认的配置文件可以先建立一个简单容器,然后复制出里面的配置文件

docker run --name nginx-server -d nginx
docker cp nginx-server:/etc/nginx/nginx.conf /home/Dockers/nginx/nginx.conf
docker stop nginx-server
docker rm nginx-server

docker rm 删除容器

.........
location ~ \.php$ {
            fastcgi_pass   php5.6:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /var/www/html/blog$fastcgi_script_name;
            include        fastcgi_params;
}
.........

nginx + php 配置文件

mariadb/mysql

我使用的是mariadb,mysql的分支

docker  run --name mariadb -p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=root password \
-v /home/Dockers/mariadb:/var/lib/mysql:ro \
-d mariadb:5.5.53

MYSQL_ROOT_PASSWORD root密码
-v /home/Dockers/mariadb:/var/lib/mysql 把数据实例到本地防止删除容器后数据丢失

差不多就是这样了,最后搭建成了,本来想把blog迁移过来,不过复制过来好像不能运行,暂时并不止到什么原因,然后想去官网下载wordpress的安装包再试一下,不知道是网络原因还是什么就是打不开wordpress的网站,只能无奈弃之,之前想过换blog程序,现在可以堂而皇之了,看了很多程序最后选择了Typecho,轻量。然后把之前的博客数据迁移了过来。END