【Docker学习之五】Nginx容器
Nginx目录下提前准备了Nginx配置文件 nginx.conf
以及项目的配置文件,我们以项目域名命名dev.g.pps.tv.conf等。Dockerfile内容为:
FROM nginx:1.9 ADD nginx.conf /etc/nginx/nginx.conf #将目录下的nginx.conf文件写入容器/etc/nginx/目录下。 ADD sites-enabled/* /etc/nginx/conf.d/ #将目录下各个项目的配置文件写入容器/etc/nginx/conf.d/目录下。 RUN mkdir /opt/www && mkdir /opt/log && mkdir /opt/log/nginx RUN chown -R www-data.www-data /opt/www /opt/log VOLUME ["/opt"]
由于官方的 Nginx1.9 是基于Debian Jessie的,因此首先将准备好的配置文件复制到指定位置,替换镜像内的配置,这里按照个人习惯,约定 /opt/www
目录为Web服务器根目录, /opt/log/nginx
目录为Nginx的Log目录。
我们的nginx配置文件nginx.conf需要修改下:
access_log /opt/log/nginx/access.log main; #把访问日志路径改为挂载目录
还有一个地方是:
include /opt/conf/nginx/*.conf; #把配置文件的路径改为挂载路径
之后构建一下镜像
docker build -t scofi/nginx ./nginx
另外,我们各个虚拟站的配置文件(dev.g.pps.tv.conf),有几个地方需要修改:
location / { root /opt/www/dev.g.pps.tv; #改为挂载地址 index index.php index.html index.htm; }
还有一个地方需要修改,就是和PHP关联的地方,由于一些原因我们到后面再说。
之后运行容器
docker run -p 80:80 -v /home/docker:/opt -d scofi/nginx:1.9
注意我们将本地的80端口绑定到容器的80端口,并将本地的 /home/docker
目录挂载到容器的 /opt
目录,这样就可以将项目源代码放在 /home/docker 目录下并通过容器访问了。
这时候我们打开浏览器访问服务器IP,就可以看到/home/docker/www/dev.g.pps.tv/ 下面的网页了。