sha256:6addfef05fed3a3329cf3005d6fa4b635ac03a90ae722add9e3ed1871c180496
Last pushed
11 months by philippecharriere494
Type
Compose
Manifest digest
sha256:6addfef05fed3a3329cf3005d6fa4b635ac03a90ae722add9e3ed1871c180496
##################################################################################################
# This Compose file is intended to run a Labspace. It can be run with the following:
#
# CONTENT_REPO_URL=https://github.com/username/labspace-content-repo docker compose -f compose.run.yaml up
##################################################################################################
services:
configurator:
image: dockersamples/labspace-configurator:v0.16.0
use_api_socket: true
volumes:
- content:/project
- docker-creds:/docker-creds
- support-vscode-extension:/etc/support-extension
environment:
PROJECT_CLONE_URL: ${CONTENT_REPO_URL}
interface:
image: dockersamples/labspace-interface:v0.16.0
ports:
- "3030:3030"
volumes:
- content:/project
- type: volume
source: support-vscode-extension
target: /etc/cmd-executor/private-key
volume:
subpath: private-key
- type: volume
source: support-vscode-extension
target: /etc/cmd-executor/socket
volume:
subpath: socket
depends_on:
workspace:
condition: service_started
configurator:
condition: service_completed_successfully
restart: unless-stopped
workspace:
image: dockersamples/labspace-workspace-node:v0.16.0
depends_on:
configurator:
condition: service_completed_successfully
socket-proxy:
condition: service_started
ports:
- 8085:8085 # For the IDE itself
- 3000:3000 # For the Node application running in the IDE
volumes:
- socket-proxy:/var/run
- content:/home/coder/project
- docker-creds:/docker-creds
- type: volume
source: support-vscode-extension
target: /etc/cmd-executor/public-key
volume:
subpath: public-key
- type: volume
source: support-vscode-extension
target: /etc/cmd-executor/socket
volume:
subpath: socket
host-republisher:
image: dockersamples/labspace-host-port-republisher:v0.16.0
pull_policy: always
restart: always
volumes:
- socket-proxy:/var/run
network_mode: service:workspace
environment:
LABEL_FILTER: labspace-resource=true
depends_on:
- workspace
- socket-proxy
workspace-cleaner:
image: dockersamples/labspace-cleaner:v0.16.0
pull_policy: always
volumes:
- socket-proxy:/var/run
environment:
LABEL_FILTER: labspace-resource=true
depends_on:
- socket-proxy
socket-proxy:
image: mikesir87/docker-socket-proxy:v1.2.2
volumes:
- socket-proxy:/tmp/proxy
- /var/run/docker.sock:/var/run/docker.sock
environment:
DEBUG_LOGS: "true"
CONFIG_DATA: |
mutators:
# Remap the project directory to the labspace content volume, since the project
# is running out of a volume.
- type: mountPath
from: /home/coder/project
to: labspace-content
# If requests to use the Docker Socket are used (such as Testcontainers),
# use the proxied one to ensure permissions, remappings, etc. are applied
- type: mountPath
from: /var/run/docker.sock
to: labspace-socket-proxy/docker.sock
# Add labels to all newly created objects
- type: addLabels
labels:
labspace-resource: "true"
- type: addToNetwork
networks:
- labspace
gates:
- type: mountSource
allowedSources:
- labspace-content
- labspace-socket-proxy
- buildx_buildkit_default_state
- label:labspace-resource=true
responseFilters:
# Only return objects with the labels we mutated on
- type: labelFilter
objectsToFilter:
- containers
- volumes
- networks
requiredLabels:
labspace-resource: "true"
LISTEN_SOCKET_PATH: /tmp/proxy/docker.sock
volumes:
socket-proxy:
name: labspace-socket-proxy
content:
name: labspace-content
docker-creds:
support-vscode-extension:
networks:
default:
name: labspace
services:
configurator:
environment:
PROJECT_CLONE_URL: https://github.com/whales-workshops/bob-hawaiian-pizza-llm
SETUP_SCRIPT: /scripts/validate-environment.sh
volumes:
- /var/run/docker.sock:/var/run/docker.sock
configs:
- source: validation-script
target: /scripts/validate-environment.sh
workspace:
environment:
MODEL_RUNNER_HOST: http://172.17.0.1:12435
configs:
validation-script:
content: |
#!/bin/bash
set -e
# Get Docker info as JSON. The `docker` CLI isn't available, so directly querying
DOCKER_INFO=$(curl -fq --unix-socket /var/run/docker.sock http://localhost/info)
# Check if running in Docker Offload environment
echo "🔎 Checking Docker Offload environment..."
OFFLOAD_LABEL=$(echo "$$DOCKER_INFO" | jq -r '.Labels[]? | select(startswith("cloud.docker.run.version="))')
if [ -z "$$OFFLOAD_LABEL" ]; then
echo "❌ Error: Not running in a Docker Offload environment."
echo "Please enable Docker Offload and restart this Labspace"
exit 1
fi
echo "✅ Docker Offload environment detected"
# Check if GPU (nvidia runtime) is available
echo "🔎 Checking GPU availability..."
NVIDIA_RUNTIME=$(echo "$$DOCKER_INFO" | jq -r '.Runtimes.nvidia.path // empty')
if [ -z "$$NVIDIA_RUNTIME" ]; then
echo "❌ Error: GPU not available."
echo "Docker Offload environment is not configured with GPUs. Please enable the GPU setting and try again."
exit 1
fi
echo "✅ GPU available: nvidia runtime found"
echo ""
echo "All checks passed! Environment is ready."
exit 0
docker compose -f oci://philippecharriere494/bob-hawaiian-pizza-llm:latest upUse the above command to pull and run the Compose file. Learn more.