防偽碼:當(dāng)悟自時(shí)人自悟,人不度人天度人。
項(xiàng)目需求:
構(gòu)建lnmp平臺(tái)。
要求nginx、php、mysql分開(kāi)布署。
Nginx通過(guò)fastcgi方式支持php動(dòng)態(tài)頁(yè)面。
實(shí)驗(yàn)架構(gòu)如下:
綜上所述,即使用單一進(jìn)程容器,即一個(gè)容器只運(yùn)行一種服務(wù),而不是把所有服務(wù)放在一個(gè)容器的設(shè)計(jì),讓PHP項(xiàng)目需要的Nginx、PHP、MySQL組件,分別運(yùn)行在各自鏡像創(chuàng)建出來(lái)的獨(dú)立容器中。
1、制作nginx鏡像
導(dǎo)入centos6鏡像
制作nginx dockerfile文件
1 2 3 4 5 6 7 8 9 10 11 12 | 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鏡像
2、制作php鏡像
1 2 3 4 5 6 7 8 9 10 11 12 | 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鏡像
3、制作mysql鏡像
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 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鏡像
4、用鏡像啟動(dòng)容器
1 2 3 | 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 |
開(kāi)啟防火墻:
5、測(cè)試網(wǎng)頁(yè)
訪問(wèn)成功
謝謝觀看,真心的希望能幫到您!
本文出自 “一盞燭光” 博客,謝絕轉(zhuǎn)載!
更多建議: