docker分离部署lnmp
以下所需的全部的文件、鏡像、軟件,如有需要請到我的百度云分享下載:
鏈接:http://pan.baidu.com/s/1kUVNdsj 密碼:an9l
項目需求:
構建lnmp平臺。
要求nginx、php、mysql分開布署。
Nginx通過fastcgi方式支持php動態頁面
實驗完整框架如下:
說明:使用單一進程容器,即一個容器只運行一種服務,而不是把所有服務放在一個容器的設計,讓lnmp項目需要的Nginx、PHP、MySQL組件,分別運行在各自鏡像創建出來的獨立容器中。
實驗步驟如下:
1、安裝docker1.12并開始服務
1)安裝docker1.12
2)開啟docker服務并開機自啟
3)關閉selinux(一定要關閉)
4)開啟路由轉發功能
5)下載centos6鏡像
(我這里已經下載好,并做成了歸檔壓縮包,只用解壓即可)
2、創建實驗所用文件夾以及文件
1)分別創建工作目錄
2)再分別創建相應目錄下的文件和子目錄
3、分別編輯nginx、php、mysql的dockerfile文件以及各自的supervisord.conf文件
1)nginx
①編輯nginx的dockerfile文件
#images of nginx
FROM centos:centos6
MAINTAINER from zhengpengfei@example.com
#install supervisor
RUN yum -y install python-setuptools
RUN /usr/bin/easy_install supervisor
#install nginx
RUN yum -y install pcre-devel zlib-devel gcc make
ADD ./software/nginx-1.6.2.tar.gz /usr/src
RUN useradd -M -s /sbin/nologin nginx
RUN cd /usr/src/nginx-1.6.2/ && ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --user=nginx --group=nginx && make && make install
#Modify nginx configuration file
COPY nginx.conf ?/usr/local/nginx/conf/
RUN ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin
RUN mkdir /usr/local/nginx/html/web
#Open nginx service
COPY supervisord.conf /etc/supervisor/supervisord.conf
EXPOSE 80
CMD ["/usr/bin/supervisord"]
②編寫nginx的supervisord.conf配置文件
③docker build -t命令制作nginx鏡像
④鏡像制作完成
2)php
①編輯php的dockerfile文件
#images of php
FROM centos:centos6
MAINTAINER from zhengpengfei@example.com
#install supervisor
RUN yum -y install python-setuptools
RUN /usr/bin/easy_install supervisor
#install php
RUN yum -y install gd libxml2-devel libjpeg-devel libpng-devel mysql-devel gcc make
RUN useradd -M -s /sbin/nologin php
ADD ./software/php-5.3.28.tar.gz /usr/src
RUN cd /usr/src/php-5.3.28/
RUN cp /usr/lib64/mysql/libmysqlclient.so.16.0.0 /usr/lib/libmysqlclient.so
RUN cd /usr/src/php-5.3.28/ && ./configure --prefix=/usr/local/php --with-gd --with-zlib --with-mysql --with-mysqli --with-mysql-sock --with-config-file-path=/usr/local/php --enable-mbstring --enable-fpm --with-jpeg-dir=/usr/lib && make && make install
#Modify PHP configuration file
RUN cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
COPY php-fpm.conf /usr/local/php/etc/
RUN mkdir -p /var/www/html/web
#Open php-fpm service
ADD ./supervisord.conf /etc/supervisor/supervisord.conf
EXPOSE 9000
CMD ["/usr/bin/supervisord"]
②編寫php的supervisord.conf配置文件
③docker build -t命令制作php鏡像
④鏡像制作完成
3)mysql
①編輯mysql的dockerfile文件
#image of mysql
FROM centos:centos6
MAINTAINER from zhengpengfei@example.com
#install supervisor
RUN yum -y install python-setuptools
RUN /usr/bin/easy_install supervisor
#install mysql
RUN yum -y install ncurses-devel make gcc gcc-c++?
ADD ./software/cmake-2.8.12.tar.gz /usr/src
ADD ./software/mysql-5.5.38.tar.gz /usr/src
RUN cd /usr/src/cmake-2.8.12 && ./configure && gmake && gmake install
RUN cd /usr/src/mysql-5.5.38 && cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DSYSCONFDIR=/etc/ -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all && make && make install
#Optimal adjustment mysql
WORKDIR ?/usr/src/mysql-5.5.38/
RUN cp -rf ./support-files/my-medium.cnf ? /etc/my.cnf
RUN cp -rf ./support-files/mysql.server ? /etc/rc.d/init.d/mysqld
RUN chmod +x /etc/rc.d/init.d/mysqld
RUN echo "PATH=$PATH:/usr/local/mysql/bin" ?>> /etc/profile
RUN source /etc/profile
#Initialize mysql
RUN groupadd mysql
RUN useradd -M -s /sbin/nologin mysql -g mysql
RUN chown -R mysql:mysql /usr/local/mysql
RUN /usr/local/mysql/scripts/mysql_install_db ? --user=mysql ? --basedir=/usr/local/mysql ? --datadir=/usr/local/mysql/data/
#service mysql start
ADD ./supervisord.conf /etc/supervisor/supervisord.conf
EXPOSE 3306
CMD ["/usr/bin/supervisord"]
②編寫mysql的supervisord.conf配置文件
③docker build -t命令制作mysql鏡像
④鏡像制作完成
4、編寫docker-compose.yml文件
5、安裝docker-compose
1)先安裝pip
?
2)再安裝compose
6、通過docker-compose啟動項目
7、進入mysql容器修改數據庫root密碼以及創建數據庫和創建授權用戶
1)修改數據庫用戶root密碼
2)創建數據庫
3)創建授權用戶
4)給root用戶授予全部權限
8、做html、php頁面和數據庫訪問測試
1)制作html、php測試頁
2)測試nginx和php的訪問處理
3)制作數據庫的測試頁面
4)測試數據庫連接
至此說明nginx、php、mysql三者的協同工作已經沒有問題了
8、安裝一個電影網站,做最后的lnmp協同工作測試
1)解壓縮SKYUC
2)設置權限
分別去nginx和php容器給予權限:
php:
nginx:
3)宿主機防火墻開啟80例外
4)在一臺客戶機安裝SKYUC
本文轉自Mr大表哥 博客,原文鏈接:?http://blog.51cto.com/zpf666/1905555? ? 如需轉載請自行聯系原作者
總結
以上是生活随笔為你收集整理的docker分离部署lnmp的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java线程:线程的同步与锁
- 下一篇: DRBD复制协议