docker中nginx使用

2,255 阅读3分钟

背景:前端小白一枚
需求:自己发布部署前端文件
1、通过root账户登录服务器(小公司,直接拿最高权限)
2、按照docker(不清楚的百度一下)
3、获取nginx镜像文件
docker pull nginx
4、启动nginx镜像
docker run -d -p 80:80 nginx简单解释下这里面的值都代表啥意思
-d 是让这个nginx容器服务后台运行
-p 是指定端口 后面跟的80:80 前面的80是宿主机的端口 后面的是容器里nginx的端口, 比如改成 8080:80 那么我们在外部访问这个nginx服务 地址应该是 xx.xx.xx.xx:8080 就可以看到nginx的欢迎页了
nginx 当然是启动的镜像名字啦
这样启动的nginx有缺陷,如果你像改这个nginx的配置文件,或者改个静态页咋改啊,我们得到这个容器的内部去改啊, 这样很麻烦不符合我们程序猿的做事风格(懒人推动社会的进步) 5、查看启动的nginx镜像
docker ps -a 如果不带-a的话就是查看正在运行的镜像文件

6、进入nginx容器
docker exec -it xxxx bash 你要是不是root用户前面加 sudo

我们接着回来谈挂载,既然你想挂载,你得知道你镜像里面nginx的配置文件啥的都在哪吧,然后挂载到你宿主机的指定位置啊,所以我们先看看他们都在哪呢 镜像中nginx.conf配置文件路径
/etc/nginx/nginx.conf
default.conf配置文件的路径
/etc/nginx/conf.d/default.conf
默认首页文件夹html路径
/usr/share/nginx/html
日志文件路径
/var/log/nginx

来个图验证一下, 然后输入 exit 退出nginx容器回到宿主机

下面在宿主机上建挂载使用的文件夹
mkdir -p /nginx/{conf,conf.d,html,logs} 建这4个文件夹都知道是干啥用的了吧, 没权限记住前面加sudo


这个文件的内容要从镜像里的复制出来哦,我们尽量保持和镜像里面的一致
前面是容器的路径 后面是宿主机的路径
docker cp 容器id:/etc/nginx/nginx.conf /nginx/conf/nginx.conf
同样在把conf.d 下的default.conf 复制过来
docker cp 容器id:/etc/nginx/conf.d/default.conf /nginx/conf.d/default.conf

最后到了最关键的环节了
docker run --name nginx-test -d -p 80:80 -v /root/nginx/html:/usr/share/nginx/html -v /root/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /root/nginx/logs:/var/log/nginx nginx

前面是宿主机路径 后面的nginx容器路径

这样就可以看到欢迎页面了

最后总结下在这中间碰到的2个坑
1、权限问题

如果你配置文件这里写的用户权限不足的话会出现500错误。

查看nginx启动的用户
ps -aux|grep nginx
worker process 这一列第一个字段如果是启动的用户,如果当前用户权限不足会出现500错误

2、ngxin配置路径

这里需要填写容器里面的路径地址而不是宿主机路径地址

在此记录一笔,有不足地方欢迎各位小哥哥小姐姐指点