1. Docker 简介

Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、 bare metal、OpenStack 集群和其他的基础应用平台。

2. 为什么要使用docker

作为一种新兴的虚拟化方式,Docker 跟传统的虚拟化方式相比具有众多的优势。

 

3. Docker 搭建PHP开发环境 

3.1 拉取镜像

1 docker pull php:5.6-fpm

2 docker pull nginx

3 docker pull redis

3.2 创建网络 

1.docker network create -d bridge php-net

3.3 启动容器

1.#启动redis

docker run --name redis-web -d --network php-net -p 6380:6379 redis

2.#启动php容器

docker run --name php-web -d --network php-net -p 9001:9000 -v {本机项目路径}:/var/www/html php:5.6-fpm

3.#启动nginx 容器

docker run --name nginx-web -d --network php-net -p 80:80 -v /Users/macbook/Desktop/docker/nginx/www:/usr/share/nginx/html -v /Users/macbook/Desktop/docker/nginx/conf:/etc/nginx/conf.d  nginx  

4.#其中

#/Users/macbook/Desktop/docker/nginx/www 为本机项目路径

#/Users/macbook/Desktop/docker/nginx/conf 为nginx 配置配置文件夹

3.4 修改 nginx 配置文件

server {
    listen       80;
    listen  [::]:80;
    server_name  localhost;

    #access_log  /var/log/nginx/host.access.log  main;

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

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
        fastcgi_pass   172.18.0.3:9000; # PHP容器的 域名和端口
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /var/www/html$fastcgi_script_name;  # PHP容器的项目路径
        fastcgi_param  PATH_INFO $1; # TP需要path_info
        include        fastcgi_params; 
    }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}

3.5 安装PHP扩展

docker exec -it php-web bash
cd /usr/local/bin  
./docker-php-ext-install pdo_mysql  
./docker-php-ext-install mysql // php7以上需要mysqli 取消了mysql 扩展
./docker-php-ext-install bcmath
./docker-php-ext-install mbstring

#相关依赖安装
apt-get update && apt-get install -y libfreetype6-dev libjpeg62-turbo-dev libmcrypt-dev libpng-dev
docker-php-ext-install -j$(nproc) iconv
docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/

docker-php-ext-install -j$(nproc) gd

apt-get install -y --no-install-recommends libgmp-dev && \
rm -r /var/lib/apt/lists/* && \
docker-php-ext-install -j$(nproc) gmp

1.curl -L -o /tmp/redis.tar.gz https://github.com/phpredis/phpredis/archive/3.1.3.tar.gz
2.tar xfz /tmp/redis.tar.gz
3.rm -r /tmp/redis.tar.gz
4.mkdir -p /usr/src/php/ext
5.mv phpredis-3.1.3 /usr/src/php/ext/redi
6.docker-php-ext-install redis

Amqp:
1.apt-get install librabbitmq-dev
2.pecl install amqp
3.docker-php-ext-enable amqp
 

4. 补充

4.1 可能用到的 shell 命令

1.lsof -i :9001  #查看端口占用情况
2.service nginx reload #重启nginx 容器

4.2可能用到的 docker 命令

#复制本地文件到docker 容器
docker cp /Users/macbook/Desktop/docker/nginx/conf/default.conf nginx-web:/etc/nginx/conf.d/default.conf  
# 进入容器
docker exec -it cb6c1fe83bff(php容器ID) bash
#stop停止所有容器
docker stop $(docker ps -a -q) 
#查看已经下载的镜像
docker image ls 
#删除容器
docker rm {容器ID} 
#删除镜像
docker rmi {imageID}  
#查看容器信息
docker inspect php01 
#一次启动 nginx php redis容器(ps:推荐做法为为该命令取别名,更方便操作)
docker start nginx-web php-web php-web-73 php-web-80 redis-web

谢谢观看,希望对大家有帮助

 

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐