本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com
使用Express 4在JavaScript中编写mu.semte.ch服务的模板。
创建一个新文件夹。添加以下Dockerfile:
FROM semtech/mu-javascript-template LABEL maintainer="***"
在app.js中创建您的微服务:
import { app, query, errorHandler } from 'mu'; app.get('/', function( req, res ) { res.send('Hello mu-javascript-template'); } ); app.get('/query', function( req, res ) { var myQuery = ` SELECT * WHERE { GRAPH <[***]> { ?s ?p ?o. } }`; query( myQuery ) .then( function(response) { res.send( JSON.stringify( response ) ); }) .catch( function(err) { res.send( "Oops something went wrong: " + JSON.stringify( err ) ); }); } ); app.use(errorHandler);
查看Express入门指南以了解如何在Express中构建REST API。
database,该数据库在[***]上暴露SPARQL端点,与其他微服务一致。以下可导入变量可用:
app:可添加路由的Express应用query(query) => Promise:向三元组存储发送查询的函数update(query) => Promise:向三元组存储发送更新的函数uuid() => string:生成随机UUID的函数errorHandler(err, req, res, next):Express的错误处理中间件函数,需在最后加载sparql:用于创建带插值的查询的模板标签sparqlEscapeString(value) => string:在SPARQL中转义字符串的函数sparqlEscapeUri(value) => string:在SPARQL中转义URI的函数sparqlEscapeInt(value) => string:在SPARQL中转义整数的函数sparqlEscapeFloat(value) => string:在SPARQL中转义浮点数的函数sparqlEscapeDate(value) => string:在SPARQL中转义日期的函数,给定值将传递给Date构造函数sparqlEscapeDateTime(value) => string:在SPARQL中转义日期时间的函数sparqlEscapeBool(value) => string:在SPARQL中转义布尔值的函数,给定值将在JavaScript中计算为布尔值(例如,字符串值'0'在JavaScript中计算为false)sparqlEscape(value, type) => string:根据给定类型在SPARQL中转义值的函数,类型必须是'string'、'uri'、'int'、'float'、'date'、'dateTime'、'bool'之一您可以从mu库导入特定属性,或导入整个mu对象。
导入特定变量的示例:
import { app, query } from 'mu'; app.get('/', function( req, res ) { res.send('Hello mu-javascript-template'); } );
导入整个库的示例:
import mu from 'mu'; mu.app.get('/', function( req, res ) { res.send('Hello using full import'); } );
您可以通过在app.js旁包含package.json文件来安装额外依赖。其工作方式与预期一致:只需在package.json的dependencies部分定义包,它们将在构建时自动安装。
可配置以下环境变量:
NODE_ENV(默认:production):取值为"development"或"production",应用启动的环境。在"development"模式下,应用会在更改时热重载。MAX_BODY_SIZE(默认:100kb):请求体的最大大小。参见ExpressJS文档。日志的详细程度可通过以下环境变量配置:
LOG_SPARQL_ALL:记录所有执行的SPARQL查询(读取和更新)(默认true)LOG_SPARQL_QUERIES:记录执行的SPARQL读取查询(默认:undefined),覆盖LOG_SPARQL_ALLLOG_SPARQL_UPDATES:记录执行的SPARQL更新查询(默认undefined),覆盖LOG_SPARQL_ALLDEBUG_AUTH_HEADERS:调试mu-authorization访问控制相关头(默认true)以下值被视为true:["true", "TRUE", "1"]。
在开发模式下运行时,热重载会自动启用。您可以通过在docker-compose.yml中使用正确的链接启动模板,轻松将其嵌入运行中的mu.semte.ch栈。如有需要,开发期间可附加Chrome检查器,提供高级JavaScript调试功能。
开发时,您可以使用模板镜像,将源代码卷挂载到/app并添加到数据库的链接。设置NODE_ENV环境变量为development。服务将在更改时热重载。当在package.json中定义额外依赖时,需要重启容器。
docker run --link virtuoso:database \ -v `pwd`:/app \ -p 8888:80 \ -e NODE_ENV=development \ --name my-js-test \ semtech/mu-javascript-template
在现有mu.semte.ch栈中开发时,最简单的方式是设置开发模式并直接挂载源代码。这便于设置到数据库和调度器的链接。
如有需要,您可以在不同端口上发布微服务,以便无需通过调度器直接访问。在下面的示例中,使用端口8888直接访问服务。我们直接设置源代码路径,确保可以在原始位置开发微服务。
yourMicroserviceName: image: semtech/mu-javascript-template ports: - 8888:80 environment: NODE_ENV: "development" links: - db:database volumes: - /absolute/path/to/your/sources/:/app/
在开发模式下运行时,您可以将Chrome调试器附加到微服务,并像往常一样添加断点。Chrome调试器需要转发端口9229,且服务需运行在开发模式。启动服务后,打开Google Chrome或Chromium,访问chrome://inspect/。
通过docker run运行时,您可以按如下方式访问服务:
docker run --link virtuoso:database \ -v `pwd`:/app \ -p 8888:80 \ -p 9229:9229 \ -e NODE_ENV=development \ --name my-js-test \ semtech/mu-javascript-template
现在打开Chromium,访问chrome://inspect/。服务启动后,本地主机上会出现一个远程目标。
在mu.semte.ch栈中运行时,您可以挂载源代码并连接到已知微服务,如下所示:
yourMicroserviceName: image: semtech/mu-javascript-template ports: - 8888:80 - 9229:9229 environment: NODE_ENV: "development" links: - db:database volumes: - /absolute/path/to/your/sources/:/app/
现在打开Chromium,访问chrome://inspect/。服务启动后,本地主机上会出现一个远程目标。
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429