美文网首页
Docker制作php+nginx的镜像

Docker制作php+nginx的镜像

作者: 追月之神 | 来源:发表于2017-12-15 19:49 被阅读0次

    系统环境:

    1.系统环境:Centos 7.3

    系统内核信息:

    Linux version 3.10.0-514.21.1.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC) ) #1 SMP Thu May 25 17:04:51 UTC 2017

    2.Centos中安装docker

    yum install docker.x86_64

    docker --version  #安装完

    Docker version 1.12.6, build 85d7426/1.12.6

    #启动docker

    systemctl start docker

    #设置开机自动启动

    chkconfig docker on

    3.修改docker的镜像地址(修改到国内地址比较快):

    vim /etc/docker/daemon.json 在json文件中增加

    "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]

    4.docker 默认的容器和镜像存储的位置:/var/lib/docker

    修改docker默认的容器和镜像存储位置:

    #停止镜像

    systemctl stop docker

    mv /var/lib/docker /data/docker

    ln -s /data/docker /var/lib/docker

    systemctl start docker

    5.php+nginx的镜像制作方式采用成熟centos镜像拉起容器后再加进编译进nginx+php后使用docker file定制容器

        5.1.下载镜像及启动容器

    docker pull centos

    docker run -it --name nginxPhp centos bash(这种方式启动docker后,当退出伪tty终端时,这个容器也就停止了)

    docker ps 查看当前正常执行的容器

    docker ps -a 查看所有镜像包含退出,停止,异常的容器

    注意当希望docker使用daemon守护进程方式后台启动时,需要启动后的容器内一直有个前端进程运行,不然就会遇到容器已启动就已经自动退出的机制。

          docker run -d --name nginxPhp centos  这个命令进去后啥也没做,所以这个容器直接就又关闭了。

    变通解决方案:

    docker run --name test2 -d centos /bin/bash -c "while true;do echo hello;sleep 1;done"

    5.2.进入容器进行安装nginx和php

    官网下载nginx和php 的编译包,nginx1.13.7,php-7.2

    将nginx,php安装包:nginx-1.13.7.tar.gz,php-7.2.0.tar.gz放至宿主机 /data/soft下,安装nginx

    重新启动一个新的容器挂载进宿主机目录

    docker run --name test3 -v /data/soft:/data/soft -d centos /bin/bash -c "while true;do echo hello;sleep 1;done"

    docker exec -it test3 bash

    为php,nginx安装基础组件: yum -y install pcre-devel gcc libxml2 libxml2-devel openssl openssl-devel curl-devel libjpeg-devel libpng-devel freetype-devel libmcrypt-devel libxslt-devel.x86_64 libxslt.x86_64 

    安装完后进入cd /data/soft/nginx-1.13.7

    ./configure--prefix=/data/soft/nginx \

    --user=root--group=root \

    --with-pcre \

    --with-ipv6 \

    --with-http_ssl_module \

    --with-http_gzip_static_module

    make&& make install

    ln -s /data/soft/nginx/sbin/nginx /usr/local/bin/nginx

    继续安装php

    cd /data/soft/php-7.2.0

    ./configure --prefix=/data/soft/php --with-curl --with-freetype-dir --with-gd --with-gettext --with-iconv-dir \ --with-kerberos --with-libdir=lib64 --with-libxml-dir --with-mysqli --with-openssl --with-pcre-regex --with-pdo-mysql \ --with-pdo-sqlite --with-pear --with-png-dir --with-xmlrpc --with-xsl --with-zlib --enable-fpm --enable-bcmath \ --enable-libxml --enable-inline-optimization --enable-gd-native-ttf --enable-mbregex --enable-mbstring --enable-opcache \ --enable-pcntl --enable-shmop --enable-soap --enable-sockets --enable-sysvsem --enable-xml --enable-zip --with-jpeg-dir \ --with-mcrypt

    make && make install

    退出容器将此容器提交打上版本的镜像

    docker commit --auther=gaogao --message='安装完php,nginx的基础包'  test3 centos:v1

    使用新的镜像启动容器,这一次启动时进行端口的绑定,将宿主机的80绑定到容器80

    docker run --name test4 -v /data/soft:/data/soft -v /data/website:/data/website -p 80:80 -d centos:v1 bash -c "while true;do echo hello;sleep 1; done"

    docker exec -it test4 bash

    nginx 启动

    /data/soft/nginx/sbin/nginx

    退出宿主机,使用浏览器访问宿主机IP,已经可以访问nginx的默认页面。

    docker,还有太多的东西,等待继续..

    相关文章

      网友评论

          本文标题:Docker制作php+nginx的镜像

          本文链接:https://www.haomeiwen.com/subject/yradwxtx.html