首页 > Docker > Docker 第九章 (构建nginx+php 容器)
2015
12-26

Docker 第九章 (构建nginx+php 容器)

一、创建Dockerfile文件

1.1、查看文件

[root@localhost nginx]# pwd
/root/Tshare365/nginx
[root@localhost nginx]# ls
default.conf  Dockerfile  fastcgi_params  run.sh

1.2、Dockerfile文件

# VERSION 0.0.1
FROM doumadou/centos6.5_x86_64-base
MAINTAINER Tshare365  "tshare365@com"
RUN rpm -ivh http://mirrors.sohu.com/fedora-epel/epel-release-latest-6.noarch.rpm
RUN yum -y install nginx php php-fpm php-cli php-common php-gd php-mbstring php-mcrypt php-mysql php-pdo php-devel php-imagick php-xmlrpc php-xml php-bcmath php-dba php-enchant
ADD default.conf  /etc/nginx/conf.d/default.conf
ADD fastcgi_params  /etc/nginx/fastcgi_params
ADD run.sh  /tmp/
RUN chmod +x /tmp/run.sh
ENTRYPOINT ["./tmp/run.sh"]
EXPOSE 80

在Dockerfile文件中我们看到我们copy了几个文件到容器中,下面我们各自看一下他们的内容

1.3、Nginx default.conf

[root@localhost nginx]# cat default.conf 
server {
    listen       80 default_server;
    server_name  _;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    error_page  404              /404.html;
    location = /404.html {
        root   /usr/share/nginx/html;
    }

    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
    location ~ \.php$ {
        root           html;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        include        fastcgi_params;
    }

}

1.4、fastcgi_params文件

default.conf  Dockerfile  fastcgi_params  run.sh
[root@localhost nginx]# cat fastcgi_params 
fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx;
fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;
fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;
fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;

1.5、run.sh 文件

[root@localhost nginx]# cat run.sh 
#!/bin/sh
/usr/sbin/php-fpm -D
/usr/sbin/nginx -g "daemon off;"
[root@localhost nginx]#

二、构建镜像

[root@localhost nginx]# docker build -t tshare365/lnmp .
Sending build context to Docker daemon 11.26 kB
Sending build context to Docker daemon 
Step 0 : FROM doumadou/centos6.5_x86_64-base
 ---> 5bcd27f3a345
Step 1 : MAINTAINER Tshare365  "tshare365@com"
 ---> Using cache
 ---> a2fb9ddeddef
Step 2 : RUN rpm -ivh http://mirrors.sohu.com/fedora-epel/epel-release-latest-6.noarch.rpm
 ---> Using cache
 ---> 54316fec70bf
Step 3 : RUN yum -y install nginx php php-fpm php-cli php-common php-gd php-mbstring php-mcrypt php-mysql php-pdo php-devel php-imagick php-xmlrpc php-xml php-bcmath php-dba php-enchant
 ---> Using cache
 ---> 9e76cde66bb2
Step 4 : ADD default.conf /etc/nginx/conf.d/default.conf
 ---> Using cache
 ---> de138ff313df
Step 5 : ADD fastcgi_params /etc/nginx/fastcgi_params
 ---> Using cache
 ---> 4c3084d4c0cc
Step 6 : ADD run.sh /tmp/
 ---> Using cache
 ---> 7b00d69cdc84
Step 7 : RUN chmod +x /tmp/run.sh
 ---> Running in bdcfc7b95ec1
 ---> 542ea56f9e9e
Removing intermediate container bdcfc7b95ec1
Step 8 : ENTRYPOINT ./tmp/run.sh
 ---> Running in 8d1bddcebc30
 ---> 71adeab97ea8
Removing intermediate container 8d1bddcebc30
Step 9 : EXPOSE 80
 ---> Running in 7b85e7d7089f
 ---> a848a170304c
Removing intermediate container 7b85e7d7089f
Successfully built a848a170304c

三、启动容器

[root@localhost nginx]# docker run -d -p 80:80 -v /data/:/usr/share/nginx/html/ tshare365/lnmp
72835657418e8c14672cb9040147d472316efc9c3759dcdfffcf760ff40fc95f
[root@localhost nginx]# docker ps -l
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                  PORTS                NAMES
72835657418e        tshare365/lnmp      "./tmp/run.sh"      1 seconds ago       Up Less than a second   0.0.0.0:80->80/tcp   tender_lalande      
[root@localhost nginx]#

四、创建html 和 php 文件

[root@localhost ~]# cd /data/
[root@localhost data]# cat index.html 
<h1>www.tshare365.com</h1>
[root@localhost data]# cat index.php 
<?php
phpinfo();
?>
[root@localhost data]#

五、游览器访问测试

5.1、访问html页面验证nginx是否启动blob.png

5.2、访问php页面验证php是否启动

blob.png

总结

在配置这个docker容器的时候踩过几个坑,总结一下分享给大家

1、在Dockerfile中不能执行多个CMD命令 如果有这个需要最好使用脚本
2、ENTRYPOINT ["./run.sh"] 执行这样执行脚本不能直接写shrun.sh 这样写会报找不到$PATH  

 本章docker内容就到此结束了,如果你对docker感兴趣,请持续关注Tshare365谢谢!




最后编辑:
作者:tshare365
这个作者貌似有点懒,什么都没有留下。
捐 赠您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请狠狠点击

留下一个回复