使用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
相關文章
相關標籤/搜索