docker下安裝Nginx

一、 環境說明

  • docker: 18.03.1-ce
  • nginx: 1.15.1

二、 拉取最新的 Nginx 鏡像

  • 拉取鏡像
$ docker pull nginx
  • 查看當前鏡像
$ docker images
# 查詢結果:
REPOSITORY    TAG     IMAGE ID      CREATED      SIZE
nginx       latest   8b89e48b5f15  7 hours ago   109MB

三、 準備工作

本次將web服務部署在 /srv/web 目錄下:

3.1 創建 /srv/web 目錄 並進入該目錄

$ cd /srv && mkdir web && cd web

3.2 隨便創建一個 Nginx 容器,並拷貝 Nginx 的默認配置:

  • 創建容器:
$ docker run -d --name nginx nginx
  • 從容器中拷貝配置文件至本地:
# 查看 ==> 獲取容器ID
$ docker container ls
# 在當前目錄下創建目錄:conf 
$ mkdir conf
# 拷貝容器內 Nginx 默認配置文件到本地當前目錄下的 conf 目錄
$ docker cp a89b2c5f3dd1:/etc/nginx/nginx.conf $PWD/conf
  • 刪除容器:
# 停止容器
$ docker container stop a89b2c5f3dd1
# 刪除容器
$ docker container rm a89b2c5f3dd1

四、 開始正式部署

  • 部署命令:
$ docker run -d -p 80:80 -p 443:443 --name nginx -v $PWD/html:/usr/share/nginx/html -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf -v $PWD/logs:/var/log/nginx nginx
  • 命令詳細說明:
-d # 表示在一直在後臺運行容器
-p 80:80 # 對端口進行映射,將主機80端口映射到容器內部的80端口(前面的是主機的80,後面的是容器的80)
-p 443:443 #主機443端口映射到容器的443端口(爲了支持ssl)
--name # 設置創建的容器名稱
-v # 將本地目錄(文件)掛載到容器指定目錄;

五、 測試

5.1 測試

​ 如果是本地測試部署則打開:localhost:80 即可訪問到 web 服務器;

5.2 補充:

​ 因爲是將容器內的 nginx 的根目錄給掛載到本地指定目錄,所以上面訪問到的頁面應該會報 403 錯誤;接下來可以在 /srv/web/html/ 開始我們的項目;

5.3 進入本地目錄:/srv/web/html/ 創建測試文件 index.html

$ cd /srv/web/html
# 創建並隨便編寫內容 重新刷新頁面
$ vim index.html

六、支持ssl協議

參照文章https://blog.csdn.net/keketrtr/article/details/80439910,申請免費的ssl證書。

 最終獲得certificate.crt和private.key。因爲需要在nginx.conf裏面配置ssl證書路徑,這個路徑必須是容器能夠識別的路徑。簡單起見,我直接把這兩個文件放到/srv/web/html/cert目錄下了。因爲主機的/srv/web/html目錄映射到了容器的/usr/share/nginx/html目錄。所以在nginx.config裏面配置密鑰路徑的時候要配成如下:

ssl_certificate      /usr/share/nginx/html/cert/certificate.crt;

ssl_certificate_key  /usr/share/nginx/html/cert/private.key;

完整的nginx.conf如下:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章