CapRover

一键应用


CapRover 内置支持多款热门应用,可以开箱即用地部署,包括 WordPress、MySQL、MongoDB 等等。

在 GitHub 上有一个 一键应用仓库,并且还在持续增长。

OneClickAppsCapRover



数据库与数据库管理界面

  • MongoDB
  • MongoExpress
  • MsSQL
  • MySQL
  • Redis
  • PhpMyAdmin
  • PostgreSQL
  • Adminer
  • Apache CouchDB
  • Gitea
  • ElasticSearch
  • 以及更多...

博客与内容

  • WordPress
  • Ghost
  • Prisma 1
  • Strapi
  • Minio
  • 以及更多...

开发工具

  • Jenkins
  • Drone.io
  • Hasura
  • Nexus3
  • 还有更多...

其他应用

  • Parse
  • NextCloud
  • Rainloop
  • Thumbor
  • OhMyForm
  • 以及更多...

感谢 @8byr0,我们有一个由社区维护应用目录。你可以在 这里 查看源码。

其他应用怎么办?

某个应用或数据库没有被做成一键应用,并不代表你无法部署它。你只需要找到该应用对应的 Docker 镜像即可。比如在 NextCloud 还没成为一键应用之前,你仍然可以像下面这样手动部署: nextcloud

在 CapRover v1 中,这比上面介绍的方法更简单,因为 captain-definition 现在支持 imageName。你可以把下面内容复制粘贴到你创建的应用的部署区。如果你只需要 imageName,就不再需要生成 tar 文件:

{
  "schemaVersion": 2,
  "imageName": "nextcloud:12-rc"
}

你可以设置的所有环境变量都列在对应的 DockerHub 页面上:Nextcloud Docker Hub 页面


配置设置

这些应用都带有预设配置,但你仍可以选择按需自定义。例如,MySQL 数据库默认使用 3306 端口,但如果你有需要,也可以改成其他端口。

需要特别说明的是:其中一些配置参数在部署完成后会以环境变量的形式出现在应用设置中,但它们的值只会在安装阶段生效。也就是说,通过修改 PASSWORD 环境变量来更改 MySQL 密码并不会生效。正确的做法是使用 MySQL 命令来修改密码。PASSWORD 环境变量仅用于安装阶段设置初始密码。

升级一键应用

你部署了一键应用后,过一段时间可能会发布新版本,而你希望更新应用。不同应用的升级方式不尽相同:

仅更新镜像

大多数质量较好的应用都支持直接升级底层镜像即可完成更新,这也是最常见的方式。比如你现在用的是 MySQL 5.5,想升级到 5.7,只需要打开 “Deployment” 标签页,滚动到底部,在 Method 6: Deploy via ImageName 里输入 mysql:5.7,然后点击 deploy。

镜像名通常是 imagename:versionaccount/image:version 这种格式。你可以在部署历史(deployment history)里查看 CapRover 实际部署过的镜像;也可以到 DockerHub 查看新版本。例如:

另外还有一种情况:CapRover 会修改原始镜像来提供更多功能。例如,redis 容器会被修改以提供 认证选项。这类情况下,最省事的方式通常是删除应用并重新创建。如果你的应用有持久化数据,删除应用时务必不要移除 volume,并且重新创建应用时要使用完全相同的应用名,这样才能挂载到同一个 volume。

其他情况

一些应用的升级方式不同,尤其是当它们有持久化的代码数据时。WordPress 就是一个典型例子。升级 WordPress 时,你只需要在 WordPress 网站后台里执行升级即可。有时还需要同时升级底层镜像,这种情况下按上面的方式操作即可。

连接到数据库

在 CapRover 集群内连接

注意,由于这些应用都是 Docker 容器,你可以同时运行多个使用 3306 端口的 MySQL 数据库而互不冲突。如果你在同一个 CapRover 实例中运行 PHP 应用和多个 MySQL,并且需要在 PHP 中连接两个不同的 MySQL 数据库,可以分别使用 srv-captain--mysqlappname1:3306srv-captain--mysqlappname2:3306

远程连接

但如果你想从远程机器(例如你的笔记本电脑)连接数据库,就需要把容器端口映射到服务器端口。这种情况下,你需要在服务器上映射两个不同端口,例如:

  • 服务器的 1001 端口映射到 mysql-1 的 3306 端口
  • 服务器的 1002 端口映射到 mysql-2 的 3306 端口

如果要从远程机器连接数据库,就必须进行端口映射。你可以在这里了解更多:Captain 配置 - 端口映射

完成端口映射后,你可以在数据库客户端中填写以下信息:

  • Host(主机): IP-ADDRESS-OF-SERVER
  • Port(端口): MAPPED-PORT-ON-HOST

例如在上面的例子中,mysql-1MAPPED-PORT-ON-HOST1001mysql-2 的则是 1002

假设你的服务器 IP 是 123.123.123.123,映射端口是 9999

  • MongoDB 可以使用 mongodb://dbuser:dbpassword@123.123.123.123:9999/dbname
  • MySQL 可以使用 HOST: 123.123.123.123, PORT: 9999
  • 等等...

重要: 端口映射完成后,请确保在服务器上开放对应端口。例如,如果你把主机(服务器)的 4444 端口映射到容器的 3306 端口,你需要运行下面命令:

ufw allow 4444