Ollama
Run open large language models locally
Ollama runs open large language models locally, backed by remote compute. This image bundles the Ollama server with a built-in web chat interface — open the page, pick a model, and start chatting. The Ollama HTTP API is served from the same port for your own apps.
Configuration
name: ollama
tags:
- ai
steps:
- name: app
platform: docker
mode: parallel
image: ghcr.io/dxflow-ai/ollama:latest
volumes:
- name: volume
host: ./volume
container: /volume
ports:
- name: web
host: "8080"
container: "8080"
env:
- STARTUP_MODEL=smollm2:135m
resources:
cpu: "4"
memory: 8G
[volume]
app.volume = ./volume
[port]
app.web = 8080
[env]
app.STARTUP_MODEL = smollm2:135m
[resource]
app.cpu = 4
app.memory = 8G
{
"arch": ["amd64", "arm64"],
"image": "ghcr.io/dxflow-ai/ollama:latest",
"version": "0.5",
"minimum": {
"cpu": 4,
"memory": "8G",
"storage": "50G"
}
}
Usage
1. Deploy
dxflow workflow create --identity ollama ollama.yml
# Start with the default model, or choose another at start
dxflow workflow start ollama
dxflow workflow start ollama \
--override env.app.STARTUP_MODEL=qwen2.5:1.5b
2. Open the interface
Open your browser at http://localhost:8080. The chat UI lists the installed models — pick one and start a conversation. The streaming response renders as it is generated.
3. Use the API
The Ollama HTTP API is proxied under the same port at /api, so your own tools can call it:
curl http://localhost:8080/api/chat -d '{
"model": "smollm2:135m",
"messages": [{ "role": "user", "content": "Hello!" }]
}'
Notes
STARTUP_MODELis pulled on startup and selected in the UI (defaultsmollm2:135m, preloaded into the image). Pull more models any time from a terminal withollama pull <name>.- The web interface is a React app (served by nginx) that reverse-proxies to the local Ollama server on
11434— the UI calls it under/ollama/api/*, and the standard API is also exposed directly at/api/*, so the browser and the API share port8080. - Small models suit CPU-only runs; for larger models (7B+), attach a GPU and give the step more memory.
- Authentication is not built in — keep port
8080private and reach it through the platform's authenticated proxy.