Project Icon

selfhosted-apps-docker

开源Docker应用部署指南集合

该项目汇集了多种Docker应用的部署指南,包括反向代理、密码管理、备份和媒体流等。重点介绍了Caddy反向代理的配置,并详细解释了Docker网络和环境变量管理等核心概念。项目还提供新手友好的入门指南,适合想要搭建家庭服务器或NAS的用户参考。

自托管 Docker 应用

示例指南

标志


也可以查看顶部列出的目录以了解正在进行的工作

另请查看 StarWhiz / docker_deployment_notes
该仓库以类似格式记录了自托管应用,并也使用 Caddy 作为反向代理



核心概念

  • docker-compose.yml 无需编辑即可启动,更改应在 .env 文件中进行。
  • 对于持久存储,使用绑定挂载 ./whatever_data。 不使用卷或静态路径...只使用相对于 compose 文件的路径。
  • compose 文件开头不声明版本,因为这种做法已被 弃用

要求

基本的 Linux 和 Docker Compose 知识。 这里的内容相当详细,但仍不应该是你第一次运行 Docker 容器。


Caddy 反向代理

Caddy 反向代理 是这个设置的核心。
它被描述得最为详细,所有指南都有反向代理部分, 包含针对它们的特定 Caddyfile 配置。
Caddy 在简化 HTTPS 证书的混乱方面非常出色, 你不必真正处理任何事情,同时拥有一个简单、 可读的配置文件。

但如果使用 traefik 或 nginx 代理管理器也没问题。你只需自行处理代理设置, 90% 的情况下只需将流量发送到 80 端口,别无其他。


Docker 网络

你真的应该创建一个自定义命名的 Docker 网络并使用它。

docker network create caddy_net

它可以命名为任何名称,但与默认网络相比,它提供了 容器之间的自动 DNS 解析。 这意味着可以进入一个容器并通过主机名 ping 另一个容器。
这使配置文件更简单、更清晰。


.env

通常 .env 文件被用作 env_file, 这个概念乍看可能有点难以理解。

env_file: .env

  • .env - 仅由 compose 使用的实际文件名。
    只要它在 docker-compose.yml 所在目录中就会自动使用
    其中的变量在容器构建过程中可用, 但除非在 environment: 选项中命名,否则在容器运行后不可用。
  • env_file - compose 中定义现有外部文件的选项。
    该文件中的变量将在运行的容器中可用, 但在容器构建过程中不可用。

因此,具有 env_file: .env 的 compose 文件将这两者混合在一起。

好处是你不需要在多个地方进行更改。 在 .env 中添加变量或更改名称不需要 你也去 compose 中添加/更改...此外 compose 文件 看起来更整洁,不那么拥挤。

唯一的问题是 .env 文件中的所有变量都可用于 所有使用这种 env_file: .env 方法的容器。
如果容器拾取了intended for 堆栈中不同容器的环境变量, 可能会导致潜在问题。

在这里的设置中它是有效的并经过测试,但如果你开始到处使用它 而不理解它,你可能会遇到问题。 因此,故障排除步骤之一可能是放弃 .env 并直接在 compose 文件中只在想要它们的容器下写出变量。


Docker 镜像 latest 标签

大多数情况下,镜像都没有任何标签, 这默认使用 latest 标签。
这是不推荐的, 一旦运行正常,你应该在那里放置当前标签。 当你知道可以用备份回滚到工作版本并知道镜像版本时, 这将使更新更容易。


Cloudflare

用于管理 DNS 记录。免费层提供了许多管理选项和 好处。比如在你的域名和服务器之间设置代理,这样 没人能仅通过你的域名获取你的公共 IP。或者 5 条防火墙规则, 允许你阻止除你所在国家之外的整个世界。 如何迁移到Cloudflare。


ctop

官方网站

ctop界面

类似htop的实用工具,用于快速管理容器。

它简单而高效,绝对令人惊叹。

  • 硬件使用概览,让你知道每个容器使用了多少CPU、内存、带宽、IO等
  • 容器详细信息,包括IP地址、发布和暴露的端口、创建时间等
  • 快速管理,可以快速进入容器、查看日志、停止容器等

用Go语言编写,因此速度极快,安装也非常简单,只需一个二进制文件。
下载linux-amd64版本;用chmod +x使其可执行;移动到/usr/bin/; 现在你可以在任何地方使用ctop了。


Brevo

服务通常需要发送电子邮件的功能,用于通知、注册、密码重置等...Sendinblue是免费的,每天提供300封邮件额度,且设置简单。

EMAIL_HOST=smtp-relay.brevo.com
EMAIL_PORT=587
EMAIL_HOST_USER=whoever_example@gmail.com
EMAIL_HOST_PASSWORD=xcmpwik-c31d9eykwef3342df2fwfj04-FKLzpHgMjGqP23
EMAIL_USE_TLS=1

将Archlinux作为Docker主机

我首选Archlinux,因为我最熟悉它。 通常在虚拟机中使用,并在更新前进行快照。

对于Arch的安装,我之前有这些笔记 关于如何安装以及之后需要做什么。
但在archinstall脚本 开始包含在arch ISO中后,我就改用它了。
对于安装后的设置,我创建了 Ansible-Arch仓库,几分钟内就能完成设置,不用担心遗漏什么。
Ansible非常易于使用,playbook也很容易阅读和理解, 所以花时间了解这个概念并设置自己的ansible脚本可能是值得的。

拥有这样一个仓库的最大好处是,它为记录遇到的问题的解决方案, 或为所有未来部署启用新发现的功能提供了一个专门的地方。


其他指南


Docker新手指南


YouTube频道

也许列出一些值得关注的YouTube频道不是个坏主意。

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

白日梦AI

白日梦AI提供专注于AI视频生成的多样化功能,包括文生视频、动态画面和形象生成等,帮助用户快速上手,创造专业级内容。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

讯飞绘镜

讯飞绘镜是一个支持从创意到完整视频创作的智能平台,用户可以快速生成视频素材并创作独特的音乐视频和故事。平台提供多样化的主题和精选作品,帮助用户探索创意灵感。

Project Cover

讯飞文书

讯飞文书依托讯飞星火大模型,为文书写作者提供从素材筹备到稿件撰写及审稿的全程支持。通过录音智记和以稿写稿等功能,满足事务性工作的高频需求,帮助撰稿人节省精力,提高效率,优化工作与生活。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

Trae

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号