1. 程式人生 > 其它 >Docker+Caddy+mkcert+Tomcat 在本地配置域名和 HTTPS

Docker+Caddy+mkcert+Tomcat 在本地配置域名和 HTTPS

  1. 下載並使用 mkcert 生成本地SSL證書

    將生成的兩個證書存放到當前工作目錄的 ssl 資料夾中

    $ choco install -y mkcert
    $ mkcert -install
    $ mkcert "*.hlr.com" // 會在當前資料夾生成兩個證書 _wildcard.hlr.com.pem 和 _wildcard.hlr.com-key.pem
    
  2. 修改本機 hosts

    127.0.0.1 www.hlr.com
    
  3. 啟動 Tomcat 映象並對映一個 HTML 檔案

    1. 在當前資料夾中建立一個 index.html 內容為

      <!DOCTYPE html>
      <html lang="en">
      <head>
          <meta charset="UTF-8">
          <meta http-equiv="X-UA-Compatible" content="IE=edge">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <title>Document</title>
      </head>
      <body>
          這是一個測試頁 
      </body>
      </html>
      
    2. Pull 並啟動 Tomcat 的 Docker 映象,對映當前工作目錄的 index.html 到映象中的 /usr/local/tomcat/webapps/myweb/index.html

      docker pull tomcat
      
      docker run -d \
          -v $PWD/index.html:/usr/local/tomcat/webapps/myweb/index.html \
          --rm tomcat:9.0
      
  4. 配置 Caddyfile 並啟動 Caddy 映象,用於反向代理 Tomcat,和啟用本地 SSL 證書

    1. 獲取 Tomcat 容器在 Docker 內的 IP 地址

      docker ps
      # 返回結果 dec02980f265   tomcat:9.0
      
      docker inspect --format '{{ .NetworkSettings.IPAddress }}' dec02980f265
      # 返回結果 172.17.0.2
      
    2. 配置 Caddyfile 檔案

      www.hlr.com {
          reverse_proxy 172.17.0.2:8080
          
          tls /data/ssl/_wildcard.hlr.com.pem /data/ssl/_wildcard.hlr.com-key.pem
      }
      
    3. 啟動 Caddy

      docker run -d -p 80:80 -p 443:443\
          -v $PWD/Caddyfile:/etc/caddy/Caddyfile \
          -v caddy_data:/data \
          -v $PWD/ssl:/data/ssl \
          caddy
      

    參考:

    tls (Caddyfile directive) - Caddy Documentation

    GitHub - FiloSottile/mkcert: A simple zero-config tool to make locally trusted development certificates with any names you'd like.

    Tomcat - Official Image | Docker Hub

    tomcat部署web專案方法