add-curve-format
FreeAdd support for a new curve data format in the Curves package converter system
The English summary is being prepared. Showing the original description.
Add a Docker container to a Datagrok package with Dockerfile and config
The English summary is being prepared. Showing the original description.
Review the instructions the agent will receive before you install.
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.No reviews yet. Tell others what you thought.
No login needed. Share how it worked for you, ask a question, or note where it did not run.
No comments yet. Be the first to write one.
Add support for a new curve data format in the Curves package converter system
The English summary is being prepared. Showing the original description.
Create info panels that appear in the context panel based on semantic types
The English summary is being prepared. Showing the original description.
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).
The English summary is being prepared. Showing the original description.
Add unit tests to a Datagrok package
The English summary is being prepared. Showing the original description.
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
The English summary is being prepared. Showing the original description.
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
The English summary is being prepared. Showing the original description.