Add support for a new curve data format in the Curves package converter system
中文简介正在准备中。当前显示原文说明。
Add a Docker container to a Datagrok package with Dockerfile and config
中文简介正在准备中。当前显示原文说明。
安装前可以查看交给 AI 代理的指令内容。
Help the user add a Docker container to their Datagrok package so it can be built, deployed, and accessed via the platform.
/create-docker-container [package-name]
Follow these steps to create a Docker container for a Datagrok package:
Create a dockerfiles/ folder inside the package root and add a Dockerfile there.
EXPOSE $PORT (only one EXPOSE is allowed).Example structure:
packages/MyPackage/
dockerfiles/
Dockerfile
container.json (optional)
src/
package.json
Place container.json in the same directory as the Dockerfile. If omitted, defaults are used.
{
"cpu": 1.5,
"gpu": 1,
"memory": 2048,
"on_demand": true,
"shutdown_timeout": 60,
"storage": 25,
"env": {
"CONN": "#{x.Package:Entity}",
"LOGIN": "login"
}
}
Configuration properties and defaults:
| Property | Type | Default | Description |
|---|---|---|---|
| cpu | Double | 0.25 | CPU cores allocated |
| gpu | Integer | 0 | GPU devices reserved |
| memory | Integer | 512 | RAM in megabytes |
| on_demand | Boolean | false | Start container only on first request |
| shutdown_timeout | Integer | null | Idle minutes before auto-shutdown |
| storage | Integer | 21 | Disk storage in gigabytes |
| shm_size | Integer | 64 | Shared memory in megabytes |
| env | Object | Environment variables passed to the container | |
| image | String | Published image to run instead of building one | |
| port | Integer | Port the container listens on (EXPOSE when built here) |
Set image when the image is already published — built by a CI pipeline, kept in another
repository, or a stock third-party image. The folder then needs no Dockerfile at all, and
grok publish builds and pushes nothing:
{
"image": "datagrok/jkg_python:bleeding-edge",
"port": 8888,
"on_demand": true
}
Set port alongside it — with no Dockerfile there is no EXPOSE to read. A folder holding
both a Dockerfile and an image is built from the Dockerfile.
For env values, use #{x.Package:Entity} to pass a JSON-serialized entity from a package namespace. Credentials are only passed for connections within the same package.
Get the container ID and use fetchProxy to call the container's HTTP server:
const containerId = (await grok.dapi.docker.dockerContainers.filter('my-container').first()).id;
const params = {
method: 'POST',
headers: {'Accept': 'application/json', 'Content-Type': 'application/json'},
body: JSON.stringify(payload),
};
const response: Response = await grok.dapi.docker.dockerContainers.fetchProxy(containerId, '/endpoint', params);
const result = await response.json();
The params object follows the standard RequestInit interface.
const ws: WebSocket = await grok.dapi.docker.dockerContainers.webSocketProxy(container.id, '/ws');
ws.send('Hello');
ws.addEventListener('message', (event: MessageEvent) => {
console.log(event.data);
});
setTimeout(() => ws.close(), 3000);
Every proxied HTTP request and WebSocket handshake reaches the container with two headers:
X-User-Api-Key (the user's session token) and X-Datagrok-Container-Token (valid 15 minutes,
good only for the call below). Trade the second one for the credentials of the user who made the
call: the package's credentials with the container's own laid over them, each picked by the user's
groups. Set them per group in the package's Credentials... dialog; uncheck Allow client side
there to keep them away from the package's browser code.
import os, requests
def caller_credentials(request):
token = request.headers['X-Datagrok-Container-Token']
r = requests.get(f"{os.environ['DATAGROK_API_URL']}/docker/credentials",
headers={'Authorization': f'Bearer {token}'})
r.raise_for_status() # 404: no credentials for this user's groups
return r.json() # {'apiKey': '...', ...}
A WebSocket gets one token per connection: fetch the credentials when the socket opens.
webpack
grok publish dev
A return code of 0 indicates successful deployment. After publishing, Datagrok queues the image for building automatically.
In Datagrok, go to Platform -> Dockers to view containers and images. Status indicators:
Right-click a card to start/stop containers or rebuild images. Check logs via the Property pane.
dockerfiles/ directory, Dockerfile, and optionally container.json.fetchProxy.webSocketProxy.EXPOSE port is allowed in the Dockerfile.grok-spawner must be running in the same environment.还没有评价。欢迎分享你的使用感受。
无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。
还没有评论。来写第一条吧。
Add support for a new curve data format in the Curves package converter system
中文简介正在准备中。当前显示原文说明。
Create info panels that appear in the context panel based on semantic types
中文简介正在准备中。当前显示原文说明。
Add a new single-objective optimization algorithm to the sci-comp library. Use when the user asks to implement a new optimizer (e.g. gradient descent, BFGS, simulated annealing, differential evolution).
中文简介正在准备中。当前显示原文说明。
Add unit tests to a Datagrok package
中文简介正在准备中。当前显示原文说明。
Answer a "how do I …" question about the platform with a Gherkin scenario on @datagrok-libraries/bdd that is filmed into a how-to video (grok-bdd guide), so the answer is demonstrated, sent as a video plus numbered steps, and kept as a regression test; the same scenarios, filmed in help mode, are the GIFs of the help pages
中文简介正在准备中。当前显示原文说明。
Translate hand-written Playwright specs (or any existing UI tests) into Gherkin features on @datagrok-libraries/bdd, then prove the features test what they claim by backward-matching them against the originals with independent reviewers, and fix the gaps in the core, the library and the features
中文简介正在准备中。当前显示原文说明。