「折腾」Docker 部署 Caddy

吐槽/反馈/建议:我的咸鱼心  爱发电-@wdssmq

除了本站所在的机子外,还另外有两台半 VPS,那半台因为是 NAT 在写本文时仍然在吃灰,剩下两台姑且按侧重承担了些任务;

所以上边涉及总共四家 IDC,这里会随机给出它们的推广链接:

RackNerdVPS - 偶尔会有年付 10 刀的机子

主博客用的 Z-BlogPHP,新文章是写 Markdown 发到 GitHub 再走 API 发布的,使用的 meta 结构和 hexo 基本一样,所以也可以简单用 hexo 生成一个静态站,虽然也可以托管 GitHub Pages 上,只是一来和常规更新方式不一样,二来又有额外的 VPS 可以用,就选择了自己搭建;

使用的域名是 blog.wdssmq.com,然后相应的两个 Git 仓库 [[md2zb]] [[hexo-blog]],用的主题 [[maupassant]],各自对应的链接见文章结尾;

将主仓库作为 submodule 添加到 hexo 仓库中,使用软连接映射文章目录到 source/_posts,这部分之前水过一篇了,链接见文章结尾;「- 另外写了个 bash 脚本定时运行实现自动拉取文章更新然后构建 public/ -」

当时选择了 Caddy 作为 Web 服务器,还可以自动申请 SSL 证书,不过直接使用感觉有些微妙,服务挂掉后重启略麻烦,所以后来在另一台机子上试了本身就是 Docker 项目的 NginxProxyManager,然而 hexo 本身还是要有个静态 web 服务,再之前那台不能装 Docker 的机子也过期扔掉了,所以打算再试下 Docker 部署 Caddy;

吐槽:先是搜索到一篇知乎文章,结果 Caddyfile 报语法错误,发现是镜像太久了,又重新找到了官方镜像;

caddyserver/caddy-docker:

https://github.com/caddyserver/caddy-docker

使用说明(#Docker Compose):

https://github.com/docker-library/docs/tree/master/caddy#docker-compose-example

下边配置基于官方示例修改:

version: "3.7"

services:
  caddy:
    container_name: caddy
    image: caddy:latest
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
      - "443:443/udp"
    volumes:
      - ./data/caddy/Caddyfile:/etc/caddy/Caddyfile
      - /root/Git/blog-hexo/public:/srv
      - caddy_data:/data
      - caddy_config:/config

volumes:
  caddy_data:
    external: true
  caddy_config:

  # 需要执行命令创建 caddy_data
  # docker volume create caddy_data


caddy_config 内好像会有个 autosave.json,目测是由 Caddyfile 解析转换而来,会自动生成和更新,所以不用管它,甚至不指定挂载卷也行的感觉?

caddy_data 里边存放申请到的证书之类的,理论上不需要自己管理或备份,但是如果删除容器后再启动又要重新申请也挺浪费的,所以指定一个由 Docker 管理的卷,然后external: true 则表示相对于当前 docker-compose.yml 内的「容器组」来说它是「外部的」,简单来说就是不会因为执行 docker-compose down 而被删除;

这部分算是我对「挂载卷」部分的理解;然后像 Caddyfile/srv 这种直接指定一个具体的宿主机路径的,感觉可以用「挂载目录」来作描述上的区分,用户或其他非 Docker 程序可以更方便地直接访问和管理后者,同时又允许 Docker 容器使用;


之后只需要配置 Caddyfile 即可:

blog.wdssmq.com {
    # 重定向错误的 tag 链接
    @tags {
        path_regexp tag /tags/(?P<n1>[^/]+)_(?P<n2>[^/]+)
    }
    redir @tags /tags/{re.tag.n1}-{re.tag.n2} permanent
    # root 目录
    root * /srv
    encode zstd gzip
    file_server
}

bbs.canihave.fun {
    reverse_proxy /* 172.17.0.1:8091 {
        # header_up Host {upstream_hostport}
        header_up X-Real-IP {remote}
    }
}

----------------

「折腾」Caddy 简易入门教程_电脑网络_沉冰浮水:

https://www.wdssmq.com/post/20100604351.html


「折腾」Git Submodule 探究_电脑网络_沉冰浮水:

https://www.wdssmq.com/post/20100710361.html


wdssmq/Markdown-To-Z-Blog: 使用 GitHub Actions + Markdown 更新 Z-Blog 博客。#md2zb:

https://github.com/wdssmq/Markdown-To-Z-Blog


wdssmq/blog-hexo:

https://github.com/wdssmq/blog-hexo


wdssmq/maupassant-hexo: A simple Hexo theme forked from icylogic.:

https://github.com/wdssmq/maupassant-hexo


爱发电

本文标题:《「折腾」Docker 部署 Caddy》作者:沉冰浮水
原文链接:https://www.wdssmq.com/post/20100717821.html
特别注明外均为原创,转载请注明。

分享到微信

扫描二维码

可在微信查看或分享至朋友圈。

相关文章

不明觉历呀,但还是要评论一发。 回复
发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

网站分类

搜索

本周旧文

wdssmq/blog-astro: 一个基于 Astro 的静态博客;

本质上,面临一个代码问题时,我们需要的是另一个人愿意为「你」的问题投入精力,并且有相应的技术知识。。

接上一条,Resilio Sync 换 Syncthing 感觉也是略大的工程。。Orz

去年 GoodSync 送了一年授权,然后也确实用上了;本来想着到期就换 Syncthing,结果前几天临期提醒,花 ¥381 续了三年 Orz,两者定位和使用姿势还是有些差别的。。更早是用 Resilio Sync 和 BCompare,但是前者内存占用太高,后者并不是自动同步的定位。。

2024 年了,姑且备份下嘟特存档。。

……,一个不知名的小众样式库 + 内联样式混写这种入坑姿势确实很有槽点,但是,「已经开始学」并且能够持续是绝对值得肯定的。。

在贴吧看过很多提问了,就有种错觉:好多人为了提一个问题专门注册了贴吧,问题本身可能得到有效回答,也可能没有(和提问的点及具体姿势有关。。但无论如何,之后就和注销了账号一样没有然后了,好像之后永远不用学相应的东西一样。。

《恶魔娃娃》

- 他们正研究你究竟是真正的大人,还是伪装成大人的小孩

- 我自己都研究很久了

乐高 DC 里,(基本就蝙蝠侠家,,年龄最小的那个无论是谁感觉人设都会变得一样 - -

所以,就感觉和祥林嫂一样,每天都需要向外「签到」自己的情绪感受,然而又并没有什么「需要」我这样的签到……

爱发电支持者

最新留言

友情链接

  • 订阅本站的 RSS 2.0 新闻聚合
召唤伊斯特瓦尔