本文参考:http://www.weitip.com/news/11.html
1、首先push 两个镜像
docker pull php:7.2.3-fpm
docker pull nginx
2、创建本地项目地址,到时映射到php容器里
[root@localhost www]# mkdir phpproject
[root@localhost www]# cd phpproject/
[root@localhost phpproject]# ll
总用量 0
[root@localhost phpproject]# echo "<?php phpinfo();" > info.php
[root@localhost phpproject]# pwd
/www/phpproject
3、启动php
docker run --name phpfpm -itd -v /www/phpproject:/www php:7.2.3-fpm
- --name NAME 为容器指定一个名字。
- -v 本地目录:容器目录 或 -v 容器目录。将本机的当前目录,挂载到镜像中的/www目录
4、启动nginx
docker run --name nginx_server -itd -p 8080:80 --link phpfpm:phpfpm -v /root/conf/nginx.conf:/etc/nginx/nginx.conf --volumes-from phpfpm nginx
- --link phpfrpm:phpfpm 是容器之间建立关系
- --volumes-from phpfpm 就是把/www/phpproject:/www 也会导入到 容器中/www 目录
- -v /root/conf/nginx.conf 导入到 /etc/nginx/nginx.conf 宿主机 的nginx.conf 的导入到/etc/nginx/nginx.conf 中
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;
index index.html index.htm index.php;
root /www; #nginx容器的路径
#error_page 404 /404.html;
location ~ .php$ {
root /www; #php容器的路径
fastcgi_pass phpfpm:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /www$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;
}
}
1、没有文件的情况下:
2、新增一个html文件:
3、访问php文件:
大功告成~~~
1、php容器挂载的数据卷,必须跟nignx中配置的php访问的路径一致,要不然会出问题。
2、如果出现nginx 报错an error occurred:排查一下phpfpm有没有开启、或者防火墙有没有关闭
3、docker创建容器出现WARNING: IPv4 forwarding is disabled. Networking will not work.
问题原因:ipv4的网络不能转发
解决方案: 将ipv4转发开启即可 https://blog.csdn.net/ezbuy/article/details/82462952
原文:https://www.cnblogs.com/bogiang/p/14764170.html