使用Docker快速部署Nginx服务器

Nginx是大规模互联网服务的最佳前端服务器,在Web服务、正向代理、反向代理、负载均衡等方面大量应用。Docker容器技术这两年超级火爆,能够实现快速的应用服务器部署。下面介绍经过Docker快速部署Nginx服务的方法,既能够用于大规模集群,也能够用于小规模服务、内部网站和我的网站的服务发布。html

快速开始

运行下面的脚本:前端

docker run --name nginx -d -p 80:80 tutum/nginx

而后到浏览器输入http://localhost ,便可看到缺省的结果。nginx

--name nginx ,该参数命名容器实例的名字,便于使用 docker rm -f nginx 直接删除。git

如今,咱们进去看一下容器里面的配置,运行:github

docker exec -it nginx /bin/bash

缺省的Nginx安装在var/lib/nginx下,配置在etc/nginx下面,包括nginx.conf主配置文件,conf.d和site-enabled是附加的配置文件。后面,咱们将会该目录映射到宿主机目录,以便于修改和管理。docker

网站开发

在宿主机创建一个目录app,而后将其映射到容器nginx的/app目录。/app目录在容器的缺省配置文件 /etc/nginx/site-enabled 中已经将/app设为缺省的网站根目录了。vim

运行以下命令:浏览器

docker run --name nginx -d -p 80:80 \
-v /home/username/app /app \
tutum/nginx

而后到/home/username/app下建立一个index.htm文件,随便写点啥(vim index.htm)。再去刷新浏览器,能够看到刚才写入的内容了。若是没有看到,试试 docker logs nginx,看看日志。安全

修改配置文件

在宿主机创建sites-enabled,而后映射到容器的/etc/nginx/sites-enabled/。注意下面的命令要使用绝对路径,将/.../sites-enabled/换成本身的绝对路径。 进目录/.../sites-enabled/,创建default配置文件。内容为标准的nginx配置文件,如:bash

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    root /app;
    index index.html index.htm;

    server_name localhost;

    location / {
        try_files $uri $uri/ =404;
    }
}

上面这个文件是tutum/nginx里面的/etc/nginx/sites-enabled/default文件内容。

而后,运行以下命令:

docker run --name nginx -d -p 80:80 \
-v /.../sites-enabled/:/etc/nginx/sites-enabled/
-v /home/username/app:/app \
tutum/nginx

使用Dockerfile

上面是使用命令行运行,下面将这些参数放到Dockerfile里面,而后运行docker build就能够生成本身的衍生镜像,放到本身的Docker Registry仓库里面运行。

FROM tutum/nginx
ADD sites-enabled/ /etc/nginx/sites-enabled/
ADD app/ /app/
EXPOSE 80

注意:

  • 这里将sites-enabled/和app/目录里的内容打包到docker镜像里面去了,所以从任何其它机器能够直接拉取镜像就能够运行,很是方便。
  • 但这也会带来安全性的隐患,好比将数据(如密码)传送到了运行机器,所以,切勿将这样的【打包镜像】传到公共的镜像仓库中
  • 构建器源码Dockerfile:https://github.com/openthings/nginx
相关文章
相关标签/搜索