Docker+Caddy+mkcert+Tomcat 在本地配置域名和 HTTPS
-
下载并使用
mkcert
生成本地SSL证书将生成的两个证书存放到当前工作目录的
ssl
文件夹中$ choco install -y mkcert $ mkcert -install $ mkcert "*.hlr.com" // 会在当前文件夹生成两个证书 _wildcard.hlr.com.pem 和 _wildcard.hlr.com-key.pem
-
修改本机 hosts
127.0.0.1 www.hlr.com
-
启动 Tomcat 镜像并映射一个 HTML 文件
-
在当前文件夹中创建一个
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>
-
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
-
-
配置 Caddyfile 并启动 Caddy 镜像,用于反向代理 Tomcat,和启用本地 SSL 证书
-
获取 Tomcat 容器在 Docker 内的 IP 地址
docker ps # 返回结果 dec02980f265 tomcat:9.0 docker inspect --format '{{ .NetworkSettings.IPAddress }}' dec02980f265 # 返回结果 172.17.0.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 }
-
启动 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
-