备注:接上一篇 centos 下搭建docker https://www.cnblogs.com/victorcode/p/15206199.html , 本次介绍docker安装nginx+php
1.首先安装nginx
# docker pull nginx (默认安装nginx最版)也可以使用 docker pull nginx版本号
2.创建一个名为nginx的容器并运行 (宿主机端口8081映射到dokcer的80端口)
# docker run --name nginx -d -p 8081:80
备注:
-d 后台运行
-p 设置端口映射 宿主机端口:容器端口
--name 设置容器别名
--restart=always 设置容器开机启动
-v 数据卷映射 宿主机目录:容器目录。这样方便我们管理容器配置文件及日志文件
此时去访问 你的主机ip:端口号 会出现 nginx 欢迎页 则表示nginx安装成功 .
docker start nginx 启动nginx
docker restart nginx 重启nginx
docker stop nginx 停止nginx
docker中nginx的默认安装目录 :
1. nginx.conf /etc/nginx/nginx.conf
2. log /var/log/nginx
3. html /usr/share/nginx/html
4. conf.d /etc/nginx/conf.d (default.conf)
也可执行命令:
# docker exec -it nginx /bin/bash 进入nginx容器去查看相关默认目录信息
3.开始安装php
# docker pull php:7.2-fpm 此处安装的是php的7.2版本
首先需要在宿主机创建docker目录以及docker下的www目录 (这个可以随意建(记住目录地址),存放宿主机映射目录,下面提到)
# cd /
# ls
# mkdir docker
# cd docker
# ls
# mkdir www
创建一个名为php 的容器并且运行
# docker run --name php -v /docker/www:/www --privileged=true -d php:7.2-fpm
-d 后台运行
-p 设置端口映射 宿主机端口:容器端口
--name 设置容器别名
-v 数据卷映射 宿主机目录:容器目录。这样方便我们管理容器配置文件及日志文件
上面命令中/docker/www 为宿主机目录 /www 则为dokcer下对应目录
此时执行命令 dokker ps
# docker ps
会出现正在运行的容器 nginx php
现在配置 nginx加载php , 切换到 宿主机 /docker目录 下 创建nginx相关配置目录进行和docker下的nginx进行映射
# cd /docker
# mkdir nginx
# cd nginx
# ls
# mkdir {conf,conf.d,html,log}
# ls
# conf conf.d html log
现在将docker下nginx的配置文件复制宿主机对应目录下
# docker cp nginx:/etc/nginx/nginx.conf /docker/nginx/conf/
# docker cp nginx:/var/log/nginx/* /docker/nginx/log/
# docker cp nginx:/usr/share/nginx/html/* /docker/nginx/html
# docker cp nginx:/etc/nginx/conf.d/default.conf /docker/nginx/conf.d/
修改nginx默认配置文件以支持php解析
# cd /docker/nginx/conf/conf.d
# vim default.conf
配置如下
server {
listen 80;
listen [::]:80;
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
root /www; 此处修改 /www 为docker下目录 和上面的映射对应
index main.html;
}
#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$ {
root /www;
fastcgi_pass php:9000; 此处修改为 php的容器名
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /www$fastcgi_script_name; // 此处修改
include fastcgi_params;
}
# deny access to .htaccess files, if Apache‘s document root
# concurs with nginx‘s one
#
#location ~ /\.ht {
# deny all;
#}
# :wq 保存退出
#首先需要停止刚刚运行的nginx 并且删除
# docker ps 查看正在运行的容器并且在这记住nginx的容器id
# docker stop nginx
# docker rm ngixn的容器id
以上删除nginx容器是了重新启动并且加载php运行
docker run -p 8081:80 --name nginx -v /docker/www:/www -v /docker/nginx/conf/conf.d:/etc/nginx/conf.d -v /docker/nginx/log:/var/log/nginx --link php:php --privileged=true -d nginx
注意:以上运行的 /docker/www 和上面php映射目录需一致,不然配置好访问php文件会会出现 file not found 提示 .
然后在/docker/www 下创建test.php 文件会同步到 docker /www下 , 访问 http://ip:端口号/test.php 文件 出现信息 则表示 nginx已解析php .
至此docker下安装nginx 并且nginx加载php 完成 .
个人实操记录 仅供参考,如有不同见解,欢迎留言 .