Docker分离部署LNMP

防伪码:当悟自时人自悟,人不度人天度人。

项目需求:

构建lnmp平台。

要求nginx、php、mysql分开布署。

Nginx通过fastcgi方式支持php动态页面。

wKioL1hzuSHAR48RAAAzC4PxIbU334.png-wh_50

实验架构如下:

wKiom1hztl-Derd6AAHpWKvMLvw807.png-wh_50

综上所述,即使用单一进程容器,即一个容器只运行一种服务,而不是把所有服务放在一个容器的设计,让PHP项目需要的Nginx、PHP、MySQL组件,分别运行在各自镜像创建出来的独立容器中。

1、制作nginx镜像

导入centos6镜像

wKioL1hzsYyAUn_2AAA4XEKdeso131.png-wh_50

制作nginx dockerfile文件

wKiom1hzsmSBd89xAAApptihUMU688.png-wh_50

wKioL1hzsa6h50lVAABuCLza1_8241.jpg-wh_50

wKioL1hzsb6jzpv2AAB6601GI20857.png-wh_50

from docker.io/centos:centos6
add nginx-1.6.2 /nginx-1.6.2
run yum -y install gcc pcre pcre-devel zlib-devel make
run useradd nginx -s /sbin/nologin
run cd /nginx-1.6.2 && ./configure --prefix=/nginx --user=nginx --group=nginx && make && make install
run echo "daemon off;" >> /nginx/conf/nginx.conf
run echo 'ip=$(cat /etc/hosts | grep php | awk '"'{print "'$1'"}'"')' >> /456
run echo "sed -i '55 i"'\f'"astcgi_pass      ""'"'$ip'"'"":9000;' /nginx/conf/nginx.conf" >> /456
run echo "/nginx/sbin
/nginx" >> /456
run  sed -i -e '53 i\location ~ \.php$ {' -e '53 i\root       /web;' -e '53 i\fastcgi_index  index.php;' -e '53 i\include     fastcgi.conf;}' -e 's\root   html;\root   /web;\g' /nginx/conf/nginx.conf
cmd source /456


用docker build 生成nginx镜像

 

wKiom1hzshnA9F3MAAED3wq3QWw328.jpg-wh_50

wKioL1hzskmCSSlOAAA9mhVeTfM695.png-wh_50

2、制作php镜像

wKioL1hzsnrC4h4wAAAxVfKEw58774.png-wh_50

wKiom1hzspLx9AjJAAHsOLKcZog227.jpg-wh_50

from docker.io/centos:centos6
add php-5.3.28 /php-5.3.28
run yum -y install gd libxml2-devel libjpeg-devel libpng-devel gcc gcc-c make mysql-devel
run cp /usr/lib64/mysql/libmysqlclient.so.16.0.0 /usr/lib/libmysqlclient.so
run cd /php-5.3.28 && ./configure --prefix=/php5 --with-gd --with-zlib --with-mysql=/usr/include/mysql/ --with-mysqli --with-mysql-sock --with-config-file-path=/php5 --enable-mbstring --enable-fpm --with-jpeg-dir=/usr/lib && make && make install
run  cp /php-5.3.28/php.ini-development /php5/php.ini
run cp /php5/etc/php-fpm.conf.default /php5/etc/php-fpm.conf
run useradd -M -s /sbin/nologin php
run sed -i -e 's\;pid = run/php-fpm.pid\pid = run/php-fpm.pid\g' -e 's\nobody\php\g' -e 's\listen = 127.0.0.1:9000\listen = 0.0.0.0:9000\g' /php5/etc/php-fpm.conf
run sed -i 's\short_open_tag = Off\short_open_tag = On\g' /php5/php.ini
run sed -i 's\;daemonize = yes\daemonize = no\g' /php5/etc/php-fpm.conf
cmd /php5/sbin/php-fpm


 

用docker build 生成php镜像

 

wKioL1hzsq7wHxnLAAAzR5W9dg8980.png-wh_50

wKiom1hzssWBV63qAABInO9_gj0453.png-wh_50

3、制作mysql镜像

wKioL1hzst7SKdKRAAA9N8Ci9AQ375.png-wh_50

wKiom1hzsvaDdrYKAACZz96adDA920.png-wh_50

from docker.io/centos:centos6
add cmake-2.8.12 /cmake-2.8.12
add  mysql-5.5.38 /mysql-5.5.38
run yum -y install ncurses-devel gcc gcc-c++
run cd /cmake-2.8.12 && ./configure && gmake && gmake install
run cd /mysql-5.5.38 && cmake -DCMAKE_INSTALL_PREFIX=/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -SYSCONFDIR=/etc && make && make install
run rm -rf /etc/my.cnf
run cp /mysql-5.5.38/support-files/my-medium.cnf /etc/my.cnf
run cp /mysql-5.5.38/support-files/mysql.server /mysqld
run chmod 777 /mysqld
run groupadd mysql
run useradd -M -s /sbin/nologin mysql -g mysql
run chown -R mysql:mysql /mysql
run /mysql/scripts/mysql_install_db --user=mysql --basedir=/mysql/ --datadir=/mysql/data/
run ./mysqld start &&  cd /mysql/bin && echo "grant all on *.* to 'root'@'%' identified by '123456';" | ./mysql -u root
cmd cd /mysql/bin && ./mysqld_safe



用docker build 生成mysql镜像

 

wKiom1hzsxnQahwFAAAz-GuZuos543.png-wh_50

wKioL1hzsyrQQHFrAABTtOIdVyQ519.png-wh_50

4、用镜像启动容器

docker run -dit --name php -v /web:/web lnmp:php 
docker run -dit --name mysql -p 3306:3306 lnmp:mysql 
docker run -dit --name nginx -v /web/:/web -p 81:80 --link php:php lnmp:nginx


wKiom1hztDfREuYgAABaoP52mvA461.png-wh_50

wKioL1hztEiQkJouAABW10KjWs0623.png-wh_50

开启防火墙: 

wKiom1hzs5yj1rBCAAAqVSByB7k895.png-wh_50

5、测试网页

wKioL1hzs8KThYxOAAHGZcGd4UY036.jpg-wh_50

wKioL1hzs_HDQ42kAAE-TQ12WBo639.jpg-wh_50

访问成功

wKiom1hztBLDtnfmAAGNan8dBuU875.jpg-wh_50

谢谢观看,真心的希望能帮到您!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值