设为首页 加入收藏

TOP

Docker笔记一:基于Docker容器构建并运行 nginx + php + mysql ( mariadb ) 服务环境(二)
2019-09-17 17:01:33 】 浏览:63
Tags:Docker 笔记 基于 容器 构建 运行 nginx php mysql mariadb 服务 环境
peg-dir=/usr/lib/x86_64-linux-gnu \
--with-png-dir=/usr/lib/x86_64-linux-gnu \ --with-gd \
--enable-exif \
--enable-bcmath \ #如果没有自带libbcmath,就sudo apt-get install php-bcmath "\ && ./configure $CONFIG_PHP \ && make \ && make install ADD conf/php-fpm.conf $PREFIX_PHP/etc/ ADD conf/php.ini $PREFIX_PHP/etc/ ADD conf/www.conf $PREFIX_PHP/etc/php-fpm.d/ ADD conf/php-fpm $PREFIX_PHP/bin/
RUN mkdir /var/www \
&& chown -R www-data:www-data /var/www
###################Chroot#########################################################
#如果不想chroot,这部分可以删除
#chroot的配置是一个大坑,如果你使用到session、sendmail、DNS解析等有关api,可能需要添加复制相应的目录和库文件
#以下只是本人会涉及到的,很少一部分
RUN chown -R root:root /var/www \
&& cd /var/www \ && mkdir -p lib public dev etc tmp usr/share/zoneinfo var/log \ && cp -a /dev/zero /dev/random /dev/urandom /dev/null dev/ \ && chmod --reference=/tmp tmp/ \ && chown -R www-data:www-data public var/log \ && cp /lib/x86_64-linux-gnu/libc.so.6 \ /lib/x86_64-linux-gnu/libdl.so.2 \ /lib/x86_64-linux-gnu/libnss_dns.so.2 \ /lib/x86_64-linux-gnu/libnss_files.so.2 \ /lib/x86_64-linux-gnu/libresolv.so.2 \ lib/ ###################Chroot End###################################################### ENV PATH $PREFIX_PHP/bin:$PATH

#install extensions & tools for PHP
RUN pecl install redis \
&& php -r "readfile('https://getcomposer.org/installer');" | php \
&& mv composer.phar /usr/local/bin/composer

EXPOSE 9000
CMD ["php-fpm","start"]

2.构建php-fpm镜像

cd ~/docker
sudo docker build -t cenze/php-fpm -f Dockerfile-PHP-FPM .

3.运行php-fpm容器

sudo docker run -d --link mariadb -v /home/cenze/web:/var/www --name php-fpm --privileged=true cenze/php-fpm

特别说明:php-fpm.conf中daemonize = no,否则php-fpm容器无法开启并运行在后台;本人在主机~/web下挂载了卷,绑定到容器/var/www

 

五.构建nginx镜像并运行nginx容器

1.编辑Dockerfile-Nginx

FROM ubuntu
MAINTAINER cenze <272666745@qq.com>

RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
ADD conf/sources.list /etc/apt/
RUN apt-get update \
&& apt-get install -y gcc make vim libpcre3-dev zlib1g-dev libssl-dev \
&& ln -s /usr/lib/x86_64-linux-gnu/libssl.so  /usr/lib/

ENV PKGS="/usr/local/pkgs"
ADD packages/nginx-1.10.2.tar.gz $PKGS/

# install nginx
WORKDIR $PKGS/nginx-1.10.2
ENV PREFIX_NGINX="/usr/local/nginx"
RUN mkdir $PREFIX_NGINX \
&& ./configure --prefix="$PREFIX_NGINX" --with-http_ssl_module \
&& make \
&& make install
ADD conf/nginx.conf $PREFIX_NGINX/conf/
 
#WORKDIR $PREFIX_NGINX/html
ENV PATH $PREFIX_NGINX/sbin:$PATH

EXPOSE 80 443
CMD ["nginx", "-g", "daemon off;"]

2.构建nginx镜像

cd ~/docker
sudo docker build -t cenze/nginx -f Dockerfile-Nginx .

3.运行nginx容器

sudo docker run -d -p 443:443 -p 80:80 --link php-fpm -v /home/cenze/web:/usr/local/nginx/html --name nginx --privileged=true cenze/nginx

特别说明:本人在主机~/web下挂载了卷,绑定到nginx容器/usr/local/nginx/html

 

六.创建新项目进行测试 

1)上图是运行php-fpm容器后主机~/web目录结构图,提取~/docker/packages/phpMyAdmin.tar.gz至~/web/public下

2)复制phpMyAdmin配置文件

cd ~/web/phpMyAdmin
首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇ASP.NET Zero--3.菜单配置 下一篇容器化实践金融业案例一

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目