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项目方法

原文地址:https://www.cnblogs.com/CodeAndMoe/p/15490475.html