Sign inSign up

chbrown13/labspace-testing:latest

Manifest digest

sha256:04a5a5e02ee7b4bd508d93fda7ea80194cf73fabccf95fdad2c59c114981d158

Last pushed

about 5 hours by chbrown13

Type

Compose

Manifest digest

sha256:04a5a5e02ee7b4bd508d93fda7ea80194cf73fabccf95fdad2c59c114981d158

Compose file content

##################################################################################################
# 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.31.0
    use_api_socket: true
    volumes:
      - labspace-content:/project
      - labspace-instructions:/instructions
      - docker-creds:/docker-creds
      - labspace-support:/etc/labspace-support

  interface:
    image: dockersamples/labspace-interface:v0.31.0
    ports:
      - "3030:3030"
    volumes:
      - labspace-instructions:/labspace/instructions:ro
      - type: volume
        source: labspace-support
        target: /etc/labspace-support/private-key
        volume:
          subpath: private-key
      - type: volume
        source: labspace-support
        target: /etc/labspace-support/socket
        volume:
          subpath: socket
      - type: volume
        source: labspace-support
        target: /etc/labspace-support/metadata
        volume:
          subpath: metadata
    depends_on:
      workspace:
        condition: service_started
      configurator:
        condition: service_completed_successfully
    restart: unless-stopped

  workspace:
    image: dockersamples/labspace-workspace-node:v0.31.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
      - labspace-content:/home/coder/project
      - docker-creds:/docker-creds
      - type: volume
        source: labspace-support
        target: /etc/labspace-support/public-key
        volume:
          subpath: public-key
      - type: volume
        source: labspace-support
        target: /etc/labspace-support/socket
        volume:
          subpath: socket


  host-republisher:
    image: dockersamples/labspace-host-port-republisher:v0.31.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.31.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.3.1
    volumes:
      - socket-proxy:/tmp/proxy
      - /var/run/docker.sock:/var/run/docker.sock
    configs:
      - source: docker-proxy-config-labels
        target: /etc/docker-socket-proxy/config.d/add-and-require-labels.yaml
      - source: docker-proxy-mount-remap
        target: /etc/docker-socket-proxy/config.d/mount-path-remap.yaml
      - source: docker-proxy-mount-allowlist
        target: /etc/docker-socket-proxy/config.d/mount-path-allowlist.yaml
      - source: docker-proxy-forward-proxied-socket
        target: /etc/docker-socket-proxy/config.d/forward-proxied-socket.yaml
      - source: docker-proxy-add-to-labspace-network
        target: /etc/docker-socket-proxy/config.d/add-to-labspace-network.yaml
    environment:
      DEBUG_LOGS: "true"
      LISTEN_SOCKET_PATH: /tmp/proxy/docker.sock

volumes:
  socket-proxy:
    name: labspace-socket-proxy
  labspace-content:
    name: labspace-content
  labspace-instructions:
  docker-creds:
  labspace-support:

networks:
  default:
    name: labspace

configs:
  docker-proxy-config-labels:
    content: |
      mutators:
        # Add labels to all newly created objects
        - type: addLabels
          labels:
            labspace-resource: "true"
      responseFilters:
        # Only return objects with the labels we mutated on
        - type: labelFilter
          objectsToFilter:
            - containers
            - volumes
            - networks
          requiredLabels:
            labspace-resource: "true"
  docker-proxy-mount-remap:
    content: |
      # Remap the project directory to the labspace content volume, since the project
      # is running out of a volume.
      mutators:
        - type: mountPath
          from: /home/coder/project
          to: labspace-content
  docker-proxy-mount-allowlist:
    content: |
      gates:
        - type: mountSource
          allowedSources:
            - labspace-content
            - labspace-socket-proxy
            - buildx_buildkit_default_state
            - label:labspace-resource=true
  docker-proxy-forward-proxied-socket:
    content: |
      # If requests to use the Docker Socket are used (such as Testcontainers),
      # use the proxied one to ensure permissions, remappings, etc. are applied
      mutators:
        - type: mountPath
          from: /var/run/docker.sock
          to: labspace-socket-proxy/docker.sock
  docker-proxy-add-to-labspace-network:
    content: |
      mutators:
        - type: addToNetwork
          networks:
            - labspace
services:
  workspace:
    image: dockersamples/labspace-workspace-python
    environment:
      OLLAMA_HOST: http://ollama:11434
  # configurator:
  #   environment:
  #     PROJECT_CLONE_URL: https://github.com/chbrown13/labspace-testing

  # Local LLM for Task 3 (CPU-only, so a small model is used)
  ollama:
    image: ollama/ollama:0.12.6
    volumes:
      - ollama-models:/root/.ollama
    healthcheck:
      test: ["CMD", "ollama", "list"]
      interval: 5s
      timeout: 5s
      retries: 30

  # Downloads the Task 3 model in the background as soon as the labspace starts
  ollama-pull:
    image: ollama/ollama:0.12.6
    environment:
      OLLAMA_HOST: http://ollama:11434
    command: ["pull", "qwen2.5-coder:1.5b"]
    depends_on:
      ollama:
        condition: service_healthy
    restart: on-failure

volumes:
  ollama-models:
configs:
  project_source_tar:
    content: |
      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

services:
  configurator:
    configs:
      - source: project_source_tar
        target: /etc/labspace-support/content.tar.base64
    environment:
      PROJECT_TAR_PATH: /etc/labspace-support/content.tar.base64

Docker commands

docker compose -f oci://chbrown13/labspace-testing:latest up

Use the above command to pull and run the Compose file. Learn more⁠.

Images used

Image

The easiest way to get up and running with large language models.


Pulls

100M+

Stars

1619

Last Updated

about 9 hours

Image


Pulls

10K+

Stars

0

Last Updated

about 1 month

Image


Pulls

10K+

Stars

0

Last Updated

about 1 month

Image


Pulls

10K+

Stars

0

Last Updated

about 1 month

Image


Pulls

10K+

Stars

0

Last Updated

about 1 month

Image


Pulls

10K+

Stars

0

Last Updated

about 1 month

Image


Pulls

10K+

Stars

0

Last Updated

9 months

Image


Pulls

10K+

Stars

0

Last Updated

about 1 month