# The 'version' attribute is obsolete and has been removed.
services:
openhands:
# Corrected the Docker image to what appears to be the official registry path.
# This was the cause of the "pull access denied" error.
image: docker.all-hands.dev/all-hands-ai/openhands:latest
restart: unless-stopped
# The port is exposed without mapping. Dokploy handles the routing via the domain.
ports:
- "3000"
# Environment variables are sourced from the template.toml file.
environment:
- SANDBOX_RUNTIME_CONTAINER_IMAGE=${SANDBOX_RUNTIME_CONTAINER_IMAGE}
- WORKSPACE_MOUNT_PATH=/opt/workspace_base
# Allows the container to communicate with the host's Docker daemon.
extra_hosts:
- "host.docker.internal:host-gateway"
# Volumes for persistent data. Named volumes are used instead of host mounts.
# The docker socket is mounted to allow OpenHands to manage other containers.
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- openhands-config:/.openhands
- openhands-workspace:/opt/workspace_base
# These flags are necessary for the interactive shell functionality of OpenHands.
stdin_open: true
tty: true
# Named volumes are defined here to persist configuration and workspace data.
volumes:
openhands-config:
openhands-workspace: