美文网首页Docker容器
Docker入门(php开发环境)

Docker入门(php开发环境)

作者: HK_KIKY | 来源:发表于2019-11-11 20:37 被阅读0次

    编写本文的主要目的是让大家对docker有一个简单的认识,知道它能做什么,也希望大家能考虑这个工具本身能给大家带来哪些便利。

    一、 什么是Docker?

            Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。

            开发者在笔记本上编译测试通过的容器可以批量地在生产环境、测试环境、预发布环境 中部署。

    二、 为什么要用Docker?

    简化程序

    Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,便可以实现虚拟化。Docker改变了虚拟化的方式,使开发者可以直接将自己的成果放入Docker中进行管理。方便快捷已经是 Docker的最大优势,过去需要用数天乃至数周的 任务,在Docker容器的处理下,只需要数秒就能完成。

    避免选择恐惧症

    如果你有选择恐惧症,还是资深患者。那么你可以使用 Docker 打包你的纠结!比如 Docker 镜像;Docker 镜像中包含了运行环境和配置,所以 Docker 可以简化部署多种应用实例工作。比如 Web 应用、后台应用、数据库应用、大数据应用比如 Hadoop 集群、消息队列等等都可以打包成一个镜像部署。

    节省开支

    一方面,云计算时代到来,使开发者不必为了追求效果而配置高额的硬件,Docker 改变了高性能必然高价格的思维定势。Docker 与云的结合,让云空间得到更充分的利用。不仅解决了硬件管理的问题,也改变了虚拟化的方式。

    三、 Docker初体验(PHP开发环境)

    docker安装教程忽略,有兴趣请查看以下链接

    MAC : https://www.runoob.com/docker/macos-docker-install.html

    CentOS :https://www.runoob.com/docker/centos-docker-install.html


    (一)、 创建容器

    Nginx容器创建并启动

    docker run  -itd  -p 80:80  --name nginxm  \

    -v /Users/XXX/Docker/www/:/usr/share/nginx/ \

    -v /Users/XXX/Docker/nginx/conf/:/etc/nginx/conf.d/    \

    --privileged=true  -d nginx


     Php容器创建并启动

    docker run  -p 9000:9000  --name php5-6  \

    -v /Users/XXX/Docker/www/:/usr/share/nginx/ \

    -v /Users/XXX/Docker/php/conf/:/usr/local/etc/php/  \

    -d php:5.6-fpm


    docker-php-ext-install pdo_mysql  # 需要先进入PHP容器 安装pdo  看实际项目本身的代码需要


    Mysql容器创建并启动

    docker run -p 3306:3306 --name mysql5.6 \

    -v /Users/XXX/Docker/mysql/conf:/etc/mysql/conf.d  \

    -v /Users/XXX/Docker/mysql/logs:/logs \

    -v /Users/XXX/Docker/mysql/data:/var/lib/mysql \

    -e MYSQL_ROOT_PASSWORD=123456 \

    -d mysql:5.6


    mysql -h 172.17.0.4  -u root -p # mysql 链接语句


    Redis 容器创建并启动

    docker run -p 6379:6379 -v /Users/XXX/Docker/redis/data:/data  -d redis:latest redis-server --appendonly yes

    docker exec -it 容器名称 redis-cli -h 172.17.0.5 -p 6379 -a your_password


    (二)、容器常用操作

    查看容器

    docker ps -a #查看所有容器

    docker ps  #查看开启的容器


    启动容器

    docker start nginx

    # docker start 容器名称


    进入/退出 容器

    docker exec -it php5-6 /bin/bash 

    # docker exec -it 容器名称 /bin/bash  #进入docker

    exit  #退出


    查看容器IP地址

    docker inspect 容器名称或 id  #查看容器IP


    PS:

    1、每次重启docker软件,启动容器后,各容器的IP都会变化,因此需要特别留意;

    2、需要检查nginx站点配置里的fastcgi_pass IP 为PHP容器的IP;代码中链接数据库host为MySQL容器的IP;

    (三)、Nginx配置

    站点配置config(1.修改配置后需要重启nginx;2.配置文件存放在创建容器时,所映射的目录)

    server

      {

        listen       80;

        server_name  xxx.com;

        index index.html index.htm index.php index.shtml;

        root  /usr/share/nginx/XXX/xxx.com/;

        location ~ /uploads/.*\.(php|php5)$ {

             deny all;

      }

        location ~ .*\.(php|php5)?$

        {

       fastcgi_pass 172.17.0.3:9000;

       fastcgi_index index.php;

       fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;

       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

       fastcgi_param PATH_INFO $fastcgi_path_info;

       fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;

       include  fastcgi_params;

        }

       error_page 404 = /404.php;

        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$

        {

          expires      1h;

        }

        location ~ .*\.(js|css)?$

        {

          expires      1h;

        }

        location ^~ /daemon{

          deny all;

          break;

       }

      }

    (四)、其他

    容器下常用工具的安装(需要先进入容器)

        1、vim

    apt-get update  # 同步 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引。这样才干获取到最新的软件包。

    apt-get install vim #安装vim

    将容器做成镜像

    docker commit -m  ""   -a  ""   容器ID(可以简写)  镜像名称  #-m  提示信息    -a  作者 

    docker commit -m  "nginx"  -a "xxx" d7537e914c48 nginx0731a

    四、 讲在最后

        最后,Docker可以应用在很多方面,这里只是一个入门初体验,如果大家想了解更多关于docker内容,可以进入docker官网学习,后续有任何问题都可以共同探讨。

    附上官网地址: https://docs.docker.com/

    相关文章

      网友评论

        本文标题:Docker入门(php开发环境)

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