Logo
Section 1 / 6

启动 Redis 服务器

我们在 docker-compose.yml 中添加 redis 镜像并运行 Compose。

导入

启动 Redis 服务器

我们在 docker-compose.yml 中添加 redis 镜像并运行 Compose。

为什么选择 Redis?

到目前为止我们学到的内容还不足以构建除最基础的网站或应用之外的任何东西。我们缺少拼图中关键的一块:如何将我们的 Rails 应用连接到外部服务,比如数据库。在这里,我们将学习如何做到这一点,从 Redis 开始。

为什么在数据库之前先使用 Redis?

因为虽然将服务添加到应用中的过程类似,但事实证明,Redis 比数据库更容易集成到我们的应用中。事实上,这将教会你添加任何服务所需的基本技能,无论是数据库、后台工作器、Elasticsearch,甚至是一个独立的 JavaScript 前端。很快,我们的 Docker 驱动的应用将变得和我们习惯的那样强大,甚至更加强大。

启动 Redis 服务器

我们希望我们的 Rails 应用能够与 Redis 通信。首先,我们需要一个 Redis 服务器供我们的应用连接。正如你所预料的,我们不会在本地机器上安装并运行 Redis。相反,让我们利用 Docker 的强大功能,在容器中启动一个 Redis 服务器。 最终,我们希望将 Redis 作为一个新服务通过 Compose 添加。然而,由于这是第一个添加的服务,我们将采取循序渐进的方式。

我们将首先学习如何使用 docker run 在容器中运行 Redis,然后再回头让 Compose 自动为我们完成这一操作。随着经验的积累和信心的增强,你将能够跳过这一步,直接进入 Compose 中设置服务。

使用 docker run

要使用 docker run 启动 Redis 服务器,请执行以下命令:

1$ docker run --name redis-container redis

这个命令大部分应该都很熟悉。它告诉 Docker 基于官方的 Docker redis 镜像运行一个容器。不过,这里有几个我们之前没见过的选项。

Docker 会为每个新容器分配一个唯一的容器 ID 来标识它。然而,这些长标识符并不太友好。就像我们给镜像打标签以获得更友好的名称一样,--name 选项告诉 Docker 给我们的新容器一个友好且可读的名称。

你可以通过按 Ctrl+C 来停止 Redis 服务器。

使用 Compose

我们的最终目标是让 docker-compose.yml 文件完整描述我们的应用,包括所有依赖项。在了解了如何使用 docker run 启动 Redis 服务器后,我们现在准备好设置 Compose 来为我们管理 Redis。

让我们修改现有的 docker-compose.yml 文件,添加一个名为 redis 的新服务:

1version: '3' 2 services: 3 web: 4 build: . 5 ports: 6 - "3000:3000" 7 volumes: 8 - /usercode/myapp:/usr/src/app 9 redis: 10 image: redis

我们新定义的 redis 服务与 web 服务的定义有很大不同。首先,它要简单得多:它只有一个名为 image 的属性。

定义 service 的方式

在定义服务时,有两种方法可以指定用于创建容器的镜像。

1. 使用 build 属性

我们的 web 服务使用 build 属性来指示 Compose 从 Dockerfile 构建我们的自定义镜像。

2. 使用 image 属性

然而,若要使用现成的镜像,则可以通过 image 属性指定镜像名称。这里我们指定了 redis 镜像,就像我们在 docker run 命令中所做的那样。

除此之外,主要的区别在于我们不指定的内容。

不使用 ports 属性

我们没有发布任何端口。我们的 web 服务需要发布端口,以便我们机器上的网页请求能到达运行在容器内的 Rails 服务器。而 Redis 不需要对外部访问。实际上,出于安全考虑,我们更希望它不可访问。通过不暴露端口,它被隐藏起来,对外界不可见。

不使用 volumes 属性

我们也没有指定任何要挂载的 volumes。web 服务使用 volumes 将包含我们 Rails 项目代码的本地目录挂载到容器内。这样做是为了让我们在本地编辑文件时,更改能自动被容器识别。对于 Redis,我们不需要这种行为,因为我们不会修改任何文件。

现在,要启动我们的 Redis 服务器,我们将使用:

1$ docker-compose up -d redis

要查看 Redis 启动过程,可以查看日志:

1$ docker-compose logs redis

🍀 实践

现在,在点击“运行”按钮后,尝试在下面的终端中运行这些命令:

  1. 启动 Redis 服务器。
  2. 查看 Redis 的日志。

注意:应用大约需要 2 分钟才能启动。如果终端断开连接,请点击“运行”按钮。

No configuration found for ID: b8cc51fa3b5b2e85ba8dfe8ac798c27a9f1cf04be6983216e8bd1740fa9f8f06

太棒了!我们已成功为应用设置了 Redis 作为新服务。🎉

注意:在上述文件中,我们使用了自定义镜像 educative1/railsv3 以加快流程。

高级 Gem 管理

手动连接 Redis 服务器