Skip to content

whg517/docker-compose

Repository files navigation

docker-compose

最近发现有不少人关注到了我的这个仓库。非常荣幸我的过往经验形成的知识能给大家提供帮助。 为了方便大家对仓库变更有具体的了解,我增加了一个 ChangeLog 文件,记录了每次变更的内容。 如果你有任何问题,欢迎提 ISSUE 。

本项目为个人记录常用 docker-compose 文件的地方,方便统一管理和同步使用。

将常用的 docker-compose 放在 Github 中管理,可以在使用的很方便的找到。如果是在常用的开发环境,只需要将项目克隆到工作目录, 在后续使用时,如果有调整或者增加的服务,都能很方便的同步。如果不是常用环境,只需要在浏览器中打开本项目,将需要的配置文件 复制下来即可。

环境准备

首先需要一个容器环境,可以是 Docker 也可以是 containerd 。 鉴于 Docker 这几年政策的调整,和容器化社区的发展,如果你要在一个新的环境中使用容器,建议你使用 containerd

安装环境不是本项目的重点,所以仅列出需要的技术和相关引用连接。

containerd

推荐使用 containerd 作为后端容器工具,即使未来再安装 kubernetes 时,也可以轻松应对。

参考 Getting started 安装 containerd 。

参考 containerd/nerdctl 安装为 containerd 适配的 Docker 命令。让你像使用 Docker 和 docker-compose 一样 使用 containerd 。

Docker

请参照 Get Docker 中安装最新的 Docker 环境。

然后参照 Install Docker Compose 安装最新版本的 docker-compose 。

初始化网络

推荐先对容器环境做子网规划,并预先初始化外部子网。在启动服务时,将容器关联到子网。

在服务间容器通信时,不依赖宿主机地址,通过内部主机名(容器名)即可通信。这样也避免了 一些不需要暴露出来的端口。例如对于一个 Web 服务,有三个容器,分别是 apprestapipgsql 。其中 app 容器对外暴露 8080 端口,可以将该端口映射到宿主机,然后 通过宿主机的 9090 访问前端页面。对于 app 访问后端 restapi 容器,只需要通过内部主机名和 端口就可以了。而后端容器 restapi 在访问 pgsql 时,也是以同样的方式。外部其实无法访问到 服务的后端容器,甚至不知道后端数据库的内容。既减少了端口占用,又能保证后端和数据库服务的 安全性。

我的做法是除了默认的几个网络之外,会在创建三个网络:

  • app 子网:应用相关容器所在子网。
  • db 子网:存储数据相关容器所在子网
  • other 子网:不符合上面的两种情况下,放在该子网。

所有 docker-compose 都不应该依赖具体主机 IP ,例如 192.168.22.102

使用

克隆项目

https://github.com/whg517/docker-compose.git

然后切换到你想要启动的服务的目录,执行 nerdctl compose up -d 或者 docker-compose up -d

如果有自定义需求,更改文件即可。

已有服务

  • alist:一个可以连接多种后端存储用来做网盘的开源项目
  • derper 启动自己的 tailscale
  • Elastic APM
  • aria2:一个突破单线程下载的下载工具,通过油猴脚本可以突破百度云限速
  • caddy:一个使用 go 开发的代理服务器,本地运行可以将某个目录作为文件服务器在内网共享
  • ElasticSearch + Kibana
  • gitlab-runner
  • grafana
  • jenkins
  • kafka
  • lakehouse
    • trino-iceberg:基于docker实现的 pg+minio+trino+iceberg 的湖仓方案,详细文档已完成
  • ldap
    • lldap 一个轻量 ldap 服务,并且自带 UI 管理界面
  • logstach
  • mariadb
  • minio
  • mongodb
  • mysql
  • nifi
  • postgres
  • portainer
  • prometheus
  • proxy:一个使用 v2fly 客户端服务,为本地提供代理
  • rabbitmq
  • redis
    • redis 单节点
    • redis HA
  • redisinsight
  • skywakling
  • sonarqube
  • splash
  • wiki.js:一个轻量的文档管理系统,可以用来做个人 wiki
  • windmall

注意

如果你打算直接 Fork 该仓库然后直接使用。建议在使用自己的配置或者本地配置的时候,将文件名命名为 local 前缀,这样 Git 会忽略该文件。

不按建议提交任何有关安全(如用户名,密码等)的内容到 Git 上。如果确实需要传入,可以在 docker-compose 文件中读取目录下的 .env 文件。 该文件是不会被 Git 记录的。

About

常用服务的 docker-compose 集合

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published