这边省略了 Caddy的介绍和直接在宿主机上操作的过程,如果有需要可留言,我可以再整理一篇。这直接使用 DockerFile ,简单使用 Caddy2.v
- 安装
在DockerFile添加如下
我的基础镜像是:
ARG UBUNTU_CODENAME="xenial"
FROM ubuntu:${UBUNTU_CODENAME}
安装命令
RUN apt install -y debian-keyring debian-archive-keyring apt-transport-https curl \
&& curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/cfg/gpg/gpg.155B6D79CA56EA34.key' | apt-key add - \
&& curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/cfg/setup/config.deb.txt?distro=debian&version=any-version' | tee -a /etc/apt/sources.list.d/caddy-stable.list \
&& apt update \
&& apt install caddy
这个是官网介绍 在 Debian,Ubuntu,Raspbian 环境下安装的方式。
- 编写 Caddyfile
如下是我的Caddyfile
直接使用Caddy特性 升级 https
test.qx-test2.top:443 {
# 日志
log {
output file /var/log/caddy_access.log
}
# 静态服务
root * /root/pages
file_server
# 请求匹配器
@server {
path /api
path /uploadFile
path /uploadImage
}
# websocket
@websocket {
path /websocket
header Connection *Upgrade*
header Upgrade websocket
}
# websocket
@room {
path /room
header Connection *Upgrade*
header Upgrade websocket
}
# 反向代理
reverse_proxy @room https://test.qx-test2.top:8443 #后缀拼接
reverse_proxy @websocket https://test.qx-test2.top:10202 #后缀拼接
reverse_proxy @server https://test.qx-test2.top:10202 #后缀拼接
redir /database http://test.qingxing-test2.top:8082 #重定向
}
- 添加Caddyfile 并启动
在DockerFile 中添加
ADD lib/admin/pages /root/pages
ADD lib/admin/conf/Caddyfile /root/caddy/
因我启动通过启动脚本启动
ENTRYPOINT ["/root/startup.sh"]
所以在 startup.sh 启动文件中 添加
echo 正在启动caddy...
cd /root/caddy/
caddy start
build 镜像即可
- 启动容器
在容器中启动后,可能出现 自动升级 https有问题,我是在启动容器命令中添加了
--network host
容器网络和宿主机一致,成功
如果有啥需要交流探讨可留言一起讨论学习
caddy 中文文档 : https://dengxiaolong.com/caddy/zh/http.redir.html
caddy 官网:https://caddyserver.com/