Flask 實作 Dockerfile + nginx + ssl 教學 (附GitHub完整程式)

Flask教學_Dockerfile + nginx + ssl

歡迎來到當 flask 遇上 docker,上集介紹了如何使用 Dockerfile 運行 flask,這集將會介紹如何用 Dockerfile + nginx 建立一個有 ssl 憑證的頁面。

  • Step 0 – 準備 ssl 憑證
  • Step 1 – 準備 Dockerfile 和 nginx.conf
  • Step 2 – 運行 docker

此篇的完整程式碼放置於 GitHub,歡迎 git clone 使用。


Step 0 – 準備 ssl 憑證

首先使用 openssl 建立開發測試用途的自簽憑證建立 ssl.csr 和 ssl.key

▍Mac & Window 安裝 openssl 方式

1.Window 安裝 openssl:openssl 官方載點

2.Mac 使用 homebrew 安裝 openssl:

▍使用 openssl 指令建立 ssl.csr & ssl.key

openssl 參數說明:

  • req -x509 : 指定 request 要使用 X.509 憑證驗證
  • nodes : 產生的憑證不需要密碼,不然每重新啟動 nginx 就要輸入一次
  • days : 有效日期,3650 表示約 10 年
  • newkey rsa:2048 : 我們需要同時產生 csr ( certificate singing request )與 key ( private key )檔並使用 2048 bits 的 RSA 加密
  • keyout : key 輸出的位置與檔名,這裡測試填 ssl.key ,請自行更換
  • out : csr 輸出的位置與檔名,這裡測試填 ssl.csr ,請自行更換

接下來輸入以下回答:

  1.  國家代碼,台灣就填 TW。
  2.  州或省,台灣就填 Taiwan。
  3.  城市,例如台北就填 Taipei。
  4.  公司名稱。
  5.  部門名稱。
  6. 伺服器的 FQDN,這個一定要填寫正確,如果沒有申請網域名稱的話,也可以用 IP 位址替代。(網域可以填寫如下: *. company.com )
  7.  E-mail 信箱。

就會在資料夾中看到 ssl.csr 和 ssl.key囉!

關於更多 openssl 文章可以參考:https://blog.gtwang.org/linux/nginx-create-and-install-ssl-certificate-on-ubuntu-linux/


Step 1 – 準備 Dockerfile 和 nginx.conf

▍資料架構

file
├── Dockerfile
├── index.html
├── ssl.csr
├── ssl.key
└── nginx.conf

nginx.conf

Dockerfile

Index.html


Step 2 – 運行 docker

建立成 image

Run Container

瀏覽 http://localhost/ 如果有看到 helloworld
瀏覽 https://localhost/ 會看到瀏覽器提示不安全 ( 因為是使用自簽憑證 ) 就代表成功囉!


最後~

此篇的完整程式碼放置於 GitHub,歡迎 git clone 使用。

更多 Flask 教學相關閱讀:

▍關於 Flask 教學系列目錄:

▍關於 Flask 使用 Docker 相關文章:

▍其他 Flask 相關教學:

有關Max行銷誌的最新文章,都會發佈在Max的Facebook粉絲專頁,如果想看最新更新,還請您按讚或是追蹤唷!

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *