docker 部署PHP+ nginx环境
Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,便可以实现虚拟化。Docker改变了虚拟化的方式,使开发者可以直接将自己的成果放入Docker中进行管理。方便快捷已经是 Docker的最大优势,过去需要用数天乃至数周的 任务,在Docker容器的处理下,只需要数秒就能完成。
二维码
简介
首先push 两个镜像
docker pull php:7.2.3-fpm docker pull nginx
然后启动一个php
docker run --name phpfpm -d -v /root/app:/app php:7.2.3-fpm
说明一下 –name 是容器的名字 phpfpm
-v 是/root/app 是本机的地址
/app 是容器内部的存储位置
然后再启动一个nginx
docker run --name nginx_server -d -p 80:80 --link phpfpm:phpfpm -v /root/conf/nginx.conf:/etc/nginx/nginx.conf --volumes-from phpfpm nginx
— link phpfrpm:phpfpm 是容器之间建立关系
–volumes-from phpfpm 就是把/root/app:/app 也会导入到 容器中/app 目录
-v /root/conf/nginx.conf 导入到 /etc/nginx/nginx.conf 宿主机 的nginx.conf 的导入到/etc/nginx/nginx.conf 中
连接PHP的配置如下:
location ~ .php$ { root /app; fastcgi_pass phpfpm:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /app$fastcgi_script_name; include fastcgi_params; }
nginx配置文件如下:
user root root; worker_processes auto; error_log /tmp/nginx_error.log crit; pid /tmp/nginx.pid; worker_rlimit_nofile 51200; events { use epoll; worker_connections 51200; multi_accept on; } http { include mime.types; default_type application/octet-stream; server_names_hash_bucket_size 512; client_header_buffer_size 32k; large_client_header_buffers 4 32k; client_max_body_size 50m; sendfile on; tcp_nopush on; keepalive_timeout 60; tcp_nodelay on; fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300; fastcgi_buffer_size 64k; fastcgi_buffers 4 64k; fastcgi_busy_buffers_size 128k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on; server { listen 80; server_name www.bt.cn; index index.html index.htm index.php; root /app; #error_page 404 /404.html; location ~ .php$ { root /app; fastcgi_pass phpfpm:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /app$fastcgi_script_name; include fastcgi_params; } location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; } location ~ .*\.(js|css)?$ { expires 12h; } location ~ /\. { deny all; } access_log /tmp/access.log; } }