参考了 https://www.jianshu.com/p/fcd0e542a6b2  dodos大佬的一些经验

1.首先,由于nginx跟php的特性,使得二者可以单独作为独立容器存在,所以为了使html、php代码都能运行,需要两个容器都挂载同一个代码项目的目录

docker run --name docker-phpfpm -p 9000:9000 -v /var/www/html:/usr/local/nginx/html -d php:5.6-fpm
docker run --name nginx -p 80:80 -v /var/www/html:/usr/local/nginx/html --link docker-phpfpm:docker-phpfpm -d nginx  (因为我使用的nginx是官方镜像最新版,所以不需要在最后标注版本
2.修改nginx对应的default.conf,目录在/etc/nginx/conf.d下,大体内容如下
 

server {
listen 80;
server_name xxx;

#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;

location / {
root /usr/local/nginx/html;   //因为挂载的代码目录是这里,所以nginx的配置文件也要指向这里
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/local/nginx/html;  //因为挂载的代码目录是这里,所以nginx的配置文件也要指向这里
}

# 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$ {
root html;
fastcgi_pass docker-phpfpm:9000;   //docker-phpfpm是连接的php容器名,即命令中--link 对应的容器名
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;   //因为phpfpm容器挂载的代码目录是这里,所以指向的php目录也必须是这个目录
include fastcgi_params;
}

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

 其余的东西因为是测试搭建环境,并没有开启,后续考虑进阶

3.在宿主机上修改/var/www/html目录的文件,添加一个index.php , 内容只用一个 phpinfo();

请求域名 /index.php,可以正常请求

 

到此基本上基本的nginx + php的独立容器就搭建完成了

 

补充 :自己给自己挖了个坑,没有挂载nginx配置文件目录及php的目录,导致只能在docker里修改,就必须在docker中安装vim等,需要以后创建docker的时候挂载目录,提高配置效率等

 

补坑 

docker run --name mysql -p 3306:3306 -v /root/bo/data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -it mysql  这个命令有mysql时区问题,改为下面的命令示例
 
docker run --name mysql5.7-shanghai -p 35076:3306 -v /root/bo/data/mysql5.7:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=12345678 -e TZ=Asia/Shanghai -it mysql:5.7 --default-time_zone='+8:00'
 
docker run --name php7 -p 9000:9000 -v /var/www/html:/usr/local/nginx/html --link mysql:mysql -it php7
docker run --name nginx -p 80:80 -v /var/www/html:/usr/local/nginx/html --link php7:php7 -it nginx
大致语法结构:docker run --name 容器名称 -p 端口映射 -v 挂载目录 --link 链接容器 -it[命令模式] 镜像名
 


posted on 2018-08-08 09:04  lsz0210  阅读(195)  评论(0编辑  收藏  举报