【译文】如何在Akash上开发和部署应用

译者注:

本指南将介绍在 Akash 上开发、容器化和部署 Node 应用程序——这是许多新开发人员还不知道的事情。

一、介绍

当我第一次来到 Akash 时,我不知道 Docker 是什么,它是如何工作的,或者如何将它用于我的个人应用程序。我也真的不知道 Akash SDL 是如何工作的,或者任何东西是如何工作的。

使用Akashlytics 部署工具,我可以快速启动并运行预制的应用程序,例如挖 PKT 的示例,但这并没有帮助我在 Akash 上运行我自己的应用程序。最重要的是,没有关于 Akash 整个过程的教程——一切都是分开的。

从这篇文章,你将学到在 Akash 上部署简单应用所需具备的一切。Hello World、网站、Discord 机器人、Steam 机器人等。如果您在任何地方遇到困难,都可以随时在Akash Discord中寻求帮助。

二、要求

在您开始本指南之前,请浏览此列表并安装/执行所有的内容。不这样做的话,可能会使您遇到错误或其他一些问题。

三、设置环境

按键盘上的 Windows 键并搜索 Node.js command prompt 并打开它。

要创建名为hello-akash的文件夹,请运行以下命令:

mkdir hello-akash

使用以下命令切换到该文件夹:

cd hello-akash

用这个命令打开 Visual Studio Code(你也可以直接搜索它):

code

3

现在您应该已经打开了 Visual Studio Code,如果幸运的话,您可能已经在正确的目录中。如果没有,请按Open Folder…并导航到您刚刚在 Node.js 命令提示符中看到的路径。完成后按Select Folder

译者注:

  • 这里翻译的时候,保留了 Visual Studio Code 页面操作的英文按钮,如果你用的汉化的编辑器,需要注意下。

4

现在,您应该有一个与此类似的页面。请注意左上角附近的“HELLO-AKASH”文字。

最后,我们可以通过按 CTRL + N 和 CTRL + S 来创建我们的应用程序文件。将其命名为“main.js”并确保它具有正确的文件扩展名。

四、开始写代码

希望您已经对 NodeJS 的工作原理和相关细节有所了解,因为我不会深入讨论这些部分。

在 Node 中,我们基本上将使用Express及其附带的“Hello World”示例。

返回 Node.js 命令提示符并输入以下命令:

npm install express --save

如果您上次没有关闭它,整个窗口将如下所示:

现在要做的一件非常重要的事情是写下您安装的所有软件包,最好是版本,我们稍后会解释原因。

回到 Visual Studio Code,您现在应该如下所示:

现在,我们终于可以像往常一样在这个文件中编写代码了。

这个页面复制代码到编辑器中,像这样:

这就是我们将在本教程中使用的内容。代码所做的基本上是在端口 3000 上设置一个网络服务器。当有人访问这个网络服务器时,它会响应“Hello World!”。

要启动 Web 服务器,我们将在 Node.js 命令提示符中使用此命令:

node main.js

现在,网络服务器在正确的端口上处于活动状态:

如果您在浏览器中打开http://localhost:3000,您现在将看到如下所示的页面:

12

这就是我们在 JS 代码方面需要做的所有工作啦!

五、创建和配置 Dockerfile

这部分对新人来说是最令人困惑的。如果您想阅读更多内容或使用本指南中未涵盖的命令,可以参考此处

就像我们对main.js文件所做的那样,我们将通过按 CTRL + NCTRL + S 创建我们的 Dockerfile。将其命名为Dockerfile并确保没有文件扩展名:

现在,把以下内容复制到文件里:

FROM node:alpine
# This line basically says ‘we need to use this light-weight version of Linux which has Node pre-installed’
EXPOSE 3000
# This line opens port 3000
COPY . /app
# This line copies everything from the directory (.) in to the folder (/app)
WORKDIR /app
# This line says that we want to run all commands within the folder (/app)
RUN npm install express
# This line installs the node package express. This is why it’s important to write down all packages you’re using. Sometimes you’ll need to save the specific versions when you’re installing packages too!
CMD [ “node”, “main.js” ]
# This line runs the command ‘node main.js’

Dockerfile 在 Visual Studio Code 中应如下所示:

六、构建和推送 Docker 镜像

按键盘上的 Windows 键并搜索Docker Desktop并打开它。

现在,在右上角附近,如果您还未登录的话,应该会看到一个Sign In(登录)按钮:

单击该按钮,输入您的用户名/密码,然后按Sign in

17

现在,我们可以回到 Node.js 命令提示符。

CTRL + C 退出 Node 应用程序。

现在,输入此命令,并将其更改为您的 Docker 用户名而不是“figureprod”(这是我的用户名):

docker build -t figureprod/hello-akash:1.0.0 .

然后将其推送到 Dockerhub,我们可以运行以下命令:

docker push figureprod/hello-akash:1.0.0

在命令提示符中,所有操作如下:

我们现在可以看到托管在Dockerhub 上的镜像。我们稍后可以用下面的方式引用它:

docker-name/image-name:version

就我而言,它是:

figureprod/hello-akash:1.0.0

七、测试我们的 Docker 镜像

转到我们的 Node.js 命令提示符,我们只需输入此命令即可再次启动我们的应用程序。和前面一样,将“figureprod”更改为您自己的用户名,因为这是您在实际场景中必须执行的操作。

docker run -p 3000:3000 figureprod/hello-akash:1.0.0

它看起来就像我们运行 NodeJS 文件时的样子:

19

像上次一样,我们应该能够在http://localhost:3000上查看页面:

20

八、部署到 Akash

令人惊讶的是,使用 Windows 上可用的 GUI 工具,这是本教程中比较简单的部分之一。

正如我们之前所做的那样,按下键盘上的 Windows 键并搜索“Akashlytics Deploy”并打开它。

如果您还没有 Keplr 钱包,请查看本指南。在此之后,您还需要确保您的钱包中有超过 5 个 AKT。

打开 Akashlytics Deploy 后,您将看到一个如下所示的窗口:

在第一个输入字段中输入您的种子短语/12 个单词/助记词,在第二个输入字段中输入您想要的任何名称,并在第三个输入一个您可以记住的密码。之后页面将如下所示:

右上角附近有一个按钮,上面写着“创建证书”。按此,然后批准它:

现在,您可以通过按此按钮来创建部署:

选择一个空模板,向下滚动,然后按“继续”:

在出现的暗域中,输入这个内容。如果您想更多地了解它们的工作原理,请参阅堆栈定义语言 (SDL) 上的此页面

如果您已经构建了自己的镜像,请将“figureprod”更改为您自己的 Dockerhub 用户名。

向下滚动并按“创建部署”,然后按“存款”,最后按“批准”。

29

您现在可以等待投标进入。选择一个并按“接受投标”,然后批准交易。

稍等片刻后,您将看到如下所示的页面:

在底部附近,有一个很长的地址(这里是http://r7o69u1nidae1f7lkg5iiupjp8.ingress.provider-0.prod.ams1.akash.pub),这将是您访问部署的网址。

打开这个网址会提示我:

步骤就是这样,我们完成啦!

九、进阶知识

要使用您自己的应用程序执行此操作,您需要修改的是:

  • Dockerfile 的内容
  • 目录下的代码和文件
  • 版本和可选的镜像名称

如果您想保留密钥、密码等敏感细节,您可以查看本指南,了解 ENV 变量的工作原理。我们不硬编码的原因是 Dockerhub 上的所有代码都是公开的,因此我们需要将这些详细信息私下发送给提供商,以避免人们窥探。

译者注:

  • 硬编码:其实此处就是把环境变量“写死”的意思,因为镜像是公开的,所以密钥不能写死,要能自定义。