- Build image:
docker build --platform linux/amd64 --build-arg CREWAI=1.14.7 -t crewai:1.14.7 .- Start container with a project mount:
mkdir -p projects && \
docker run -it --rm --network host \
-v "$PWD/projects:/home/appuser/apps" \
-e P=my_project \
crewai:1.14.7 \
bash- Inside container, open your project:
v .
crewai runThis image is a ready-to-use local environment for building and running CrewAI agents without local dependency setup.
It includes:
- neovim + LazyVim
- uv and
crewai/crewai-tools fd,rg,fzf, andlazygit- shell helpers (
v,lg,sv,newcrew)
- Docker
- Docker Compose (optional, for repeatable local deployment)
- Basic Python/CrewAI familiarity
- Ollama locally or remote API credentials (optional)
docker build \
--platform linux/amd64 \
--build-arg CREWAI=1.14.7 \
-t sageil/crewai:1.14.7 .mkdir -p projects
docker run -it --rm --network host \
-v "$PWD/projects:/home/appuser/apps" \
-e P=my_project \
sageil/crewai:1.14.7 \
bashThe image defaults to P=default_crew if not provided.
docker compose up -d
docker compose exec crewai bashYou can override image and project name:
IMAGE=sageil/crewai:latest \
CREWAI_PROJECT=my_project \
docker compose up -dProjects are created with crewai create crew on first startup (based on P).
Useful commands:
v .→ open current project in neovimnewcrew <project_name>→ create a new CrewAI project in current directorysv→ activate.venvin current project (auto-run when present)crewai run→ run the current project
- Open project in neovim (
v .). - Open LazyVim explorer (
SPACE+e) and show hidden files (SHIFT+H). - Update model/base settings to use your host endpoint (example:
http://host.docker.internal:11434).
- Open your config in neovim.
- Set
OPENAI_API_KEYand model values in.envor crew config. - Run
crewai run.
from crewai.llm import LLM
myllm = LLM(
model='ollama/deepseek-r1:7b',
base_url='http://localhost:11434',
temperature=0.2,
)Assign llm=myllm in Agent(...) where needed.
- Persist project outputs with
./projects:/home/appuser/apps. - Remove
network_mode: hostindocker-compose.ymlonly when using external APIs and no host networking is required. - Restart a stopped container with
docker container start -ai <container_name>.
Recent and commonly used tags:
1.15.161.15.151.15.141.15.131.15.121.15.111.15.101.15.91.15.81.15.71.15.61.15.51.15.41.15.31.15.21.15.11.15.01.14.71.14.61.14.31.14.21.12.21.11.01.10.01.9.01.8.11.8.01.7.21.7.11.7.0
Full version history is available on Docker Hub:
- Clipboard integration in neovim may require X11/display setup.
- Icon fonts may render inconsistently in some terminals.
my_project/
├── .gitignore
├── .env
├── knowledge/
├── pyproject.toml
├── README.md
└── src/
└── my_project/
├── __init__.py
├── main.py
├── crew.py
├── tools/
│ ├── custom_tool.py
│ └── __init__.py
└── config/
├── agents.yaml
└── tasks.yaml
- Report issues: https://github.com/sageil/crewai-docker-image/issues