记一次在docker中配置nginx

为什么要配nginx?本意其实是想在vps上搭建一个静态http文件服务,能够多线程下载vps上离线的美剧。

为什么要用docker呢? 原因在于即使你对docker略懂皮毛,你也能深刻的体会到用docker部署应用的方便与优雅,当然水平越高就越优雅。

像我这种拉拉官方镜像的菜鸡,最能深刻体会到的是docker的干净。一个容器就是一个应用,删除了就干干净净。比起在各个发行版里用各种包管理器所安装的软件,管理起来要统一的多!

闲话少叙,进入正题。

首先拉取nginx镜像,如果没有特殊需求,直接选官方就行。

docker pull nginx

注意这一步,国内机器需要换下源,不然会比较慢,我在vps上做的所以没涉及到换源。

接着运行就好了。。就是这么快捷

docker run -p 80:80 --name nginx -v $PWD:/usr/share/nginx/html -d nginx

–name nginx 指的是容器名称 ,这里叫做nginx,自己可以随意命名。

-p 80:80 意思是把宿主机的80端口映射在容器的80端口上。

-v $PWD:/usr/share/nginx/html

这一步的目的是把当前目录挂载在容器的/usr/share/nginx/html下,这是nginx的默认目录,这一步执行后,把应用部署在宿主机当前目录即相当于把应用部署在nginx里了。

容器部署完成后,访问你的ip,如果看到nginx欢迎界面,即说明部署完成。

若只能看到一个403界面,这是最令人头疼的地方。

这是由于主机的selinux和容器的selinux是互相隔离的,所以容器无法直接访问宿主机的目录。

chcon -Rt svirt_sandbox_file_t $PWD

执行这一步后,容器获得访问宿主机当前目录的权限,nginx即可愉快的跑起来。

最后http文件服务器很简单。

在nginx的配置文件中,server下的location字段,加上一下三行。

autoindex on;
autoindex_exact_size on;
autoindex_localtime on;

重启容器访问主机,即可看到一个简陋的http文件服务器,当前目录里的文件已经列在其中。

相关链接

Docker 安装 Nginx

在DOCKER中访问主机目录时拒绝权限