Docker 搭建PHP开发环境
1. Docker 简介
Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、 bare metal、OpenStack 集群和其他的基础应用平台。
2. 为什么要使用docker
作为一种新兴的虚拟化方式,Docker 跟传统的虚拟化方式相比具有众多的优势。
- 更高效的利用系统资源
- 更快速的启动时间
- 一致的运行环境
- 持续交付和部署
- 更轻松的迁移
- 更轻松的维护和扩展
- 对比传统虚拟机总结
特性 | 容器 | 虚拟机 |
---|---|---|
启动 | 秒级 | 分钟级 |
硬盘使用 | 一般为 MB | 一般为 GB |
性能 | 接近原生 | 弱于 |
系统支持量 | 单机支持上千个容器 | 一般几十个 |
3. Docker 搭建PHP开发环境
3.1 拉取镜像
docker pull php:5.6-fpm
docker pull nginx
docker pull redis
3.2 创建网络
docker network create -d bridge php-net
3.3 启动容器
#启动redis
docker run --name redis-web -d --network php-net -p 6380:6379 redis
#启动php容器
docker run --name php-web -d --network php-net -p 9001:9000 -v {
本机项目路径}:/var/www/html php:5.6-fpm
#启动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
#其中
#/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
扩展参考文章
1. https://www.cnblogs.com/yinguohai/p/11329273.html
2. redis : https://www.cnblogs.com/wyaokai/p/11904701.html
3. redis: https://www.cnblogs.com/louis6575/p/12543517.html
4. gmp : https://blog.csdn.net/weixin_43992002/article/details/118415485
4. 补充
4.1 可能用到的 shell 命令
lsof -i :9001 #查看端口占用情况
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
今天的文章Docker 搭建PHP开发环境分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/28154.html