ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

使用 Jolie 和 Docker 构建(开发)容器化微服务的 3 个简单步骤

2022-11-15 12:53:57  阅读:367  来源: 互联网

标签:项目 创建 目录 系统 教程 配置 编辑 devcontainer


1. 使用 npm 创建项目

为遵循本教程创建一个新目录(例如,)并输入它。tutorial


1
mkdir tutorial

2
cd tutorial

 

现在从终端在该目录中运行以下命令。


1
npm init jolie

 

系统将询问您随之而来的常见问题,例如要使用的许可证。npm init

然后,您将看到朱莉特定的问题。继续,只需按回车键:默认值正是本教程所需要的。

特别是,对获取Dockerfile开发容器配置说“是”。我们将需要这些。

对获取 Dockerfile 和开发容器配置的回答“是”

接下来,你选择你想要的朱莉项目类型。选择“清空朱莉项目”。

选择您想要的朱莉项目类型:选择空的朱莉项目

您现在应该具有以下目录结构(加上通常的目录)。node_modules

目录结构

2. 在VSCode中编写您的服务

使用 VSCode 打开教程的目录。


1
code .

 

编辑器将自动检测文件夹的存在,并询问我们是否要在容器中重新打开目录。通过单击下面的蓝色按钮继续执行此操作。.devcontainer

在容器中重新打开

首次创建容器可能需要一段时间。VS Code 完成准备工作后,您应该会在窗口底部的状态栏中看到下面显示的绿色确认。

开发容器绿色确认

现在我们可以开始编码了!在本教程中,我们将创建一个简单的服务,该服务接受用于生成问候语的 HTTP 请求,这些请求在查询字符串中带有要问候的名称。例如,调用应返回类似 JSON 值。http://localhost:8080/greet?name=Jane{ greeting: "Hi Jane" }

打开文件,其中包含调用的空服务。main.olMain

打开 main.ol 文件,其中包含一个名为 Main 的空服务

我们从编写服务的 API 开始。它包含一个调用的操作,该操作接收类型的消息并使用类型的消息进行回复。有关更多详细信息,您可以查看此Jolie 简介Jolie 文档greetGreetRequestGreetResponse

type GreetRequest { name: string }
type GreetResponse { greeting: string }

interface GreeterInterface {
RequestResponse:
	greet( GreetRequest )( GreetResponse )
}

service Main {
	main {
		// Your code here
	}
}

 

我们现在可以在服务中实现我们的 API,获取以下代码。Main

type GreetRequest { name: string }
type GreetResponse { greeting: string }

interface GreeterInterface {
RequestResponse:
	greet( GreetRequest )( GreetResponse )
}

service Main {
	execution: concurrent

	inputPort GreeterInput {
		location: "socket://localhost:8080"
		protocol: http { format = "json" }
		interfaces: GreeterInterface
	}

	main {
		greet( request )( { greeting = "Hi " + request.name } )
	}
}

 

该属性告诉 Jolie,此服务应同时处理客户端。execution: concurrent

然后,我们为我们的 API 定义一个接入点,该接入点可在 TCP 端口 8080 的本地主机上使用(),使用 HTTP 作为传输,JSON 作为首选格式 (),并公开我们之前定义的接口 ()。

标签:项目,创建,目录,系统,教程,配置,编辑,devcontainer
来源:

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有