sha256:d3d5c4866bf410e4c601d401e32fc0ebb03d61dab50eb43acdc2c09486d41dad
Last pushed
8 months by michaelirwin244
Type
Compose
Manifest digest
sha256:d3d5c4866bf410e4c601d401e32fc0ebb03d61dab50eb43acdc2c09486d41dad
##################################################################################################
# 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.20.3
use_api_socket: true
volumes:
- content:/project
- docker-creds:/docker-creds
- labspace-support:/etc/labspace-support
environment:
PROJECT_CLONE_URL: ${CONTENT_REPO_URL}
interface:
image: dockersamples/labspace-interface:v0.20.3
ports:
- "3030:3030"
volumes:
- content:/project
- 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.20.3
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: 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.20.3
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.20.3
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:
labspace-support:
networks:
default:
name: labspace
services:
traefik:
image: traefik:3.6.5
command:
- --api.insecure=true
- --providers.docker=true
- --providers.docker.exposedbydefault=false
- --entrypoints.web.address=:80
- --entrypoints.ssh.address=:22
ports:
- "22:22"
- "80:80"
- "8080:8080"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
networks:
default:
# By adding these aliases, DNS will be MITMed to not resolve locally to each container,
# but to Traefik, which will route the traffic back to the correct container based on Host rules.
aliases:
- git.dockerlab.me
workspace:
volumes:
- gitea-outputs:/gitea-outputs:ro
configs:
- source: workspace-git-setup
target: /entrypoint.d/git-setup.sh
mode: 0755
depends_on:
git:
condition: service_healthy
git:
image: gitea/gitea:1.25.3
volumes:
- gitea-data:/data
- gitea-outputs:/gitea-outputs
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "2222:2222"
environment:
GITEA__server__ROOT_URL: http://git.dockerlab.me/
GITEA__server__SSH_DOMAIN: git.dockerlab.me
GITEA__server__SSH_LISTEN_PORT: 22
GITEA__database__DB_TYPE: sqlite3
GITEA__security__INSTALL_LOCK: "true"
labels:
traefik.enable: "true"
traefik.http.routers.git.rule: Host(`git.dockerlab.me`)
traefik.http.routers.git.entrypoints: web
traefik.http.routers.git.service: git
traefik.http.services.git.loadbalancer.server.port: "3000"
traefik.tcp.routers.git-ssh.rule: HostSNI(`*`)
traefik.tcp.routers.git-ssh.entrypoints: ssh
traefik.tcp.routers.git-ssh.service: git-ssh
traefik.tcp.services.git-ssh.loadbalancer.server.port: "22"
configs:
- source: gitea-bootstrap
target: /etc/gitea/bootstrap.sh
mode: 0755
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3000/api/healthz"]
interval: 10s
timeout: 10s
retries: 3
start_period: 5s
post_start:
- command: bash /etc/gitea/bootstrap.sh
user: root
gitea-runner:
image: gitea/act_runner:0.2.13
entrypoint: []
command: bash -c "GITEA_RUNNER_REGISTRATION_TOKEN=$(cat /gitea-outputs/runner_token.txt) /sbin/tini -- run.sh"
depends_on:
git:
condition: service_healthy
volumes:
- socket-proxy:/var/run/
- gitea-outputs:/gitea-outputs
environment:
GITEA_INSTANCE_URL: http://git.dockerlab.me
GITEA_RUNNER_NAME: labspace-runner
# CONFIG_FILE: /etc/act-runner/config.yml
volumes:
gitea-data:
gitea-outputs:
configs:
workspace-git-setup:
content: |
#!/bin/bash
sudo mkdir -p /home/coder/.ssh
sudo cp /gitea-outputs/moby_id_rsa /home/coder/.ssh/id_rsa
sudo cp /gitea-outputs/moby_id_rsa.pub /home/coder/.ssh/id_rsa.pub
sudo chown -R coder:coder /home/coder/.ssh
ssh-keyscan -H git.dockerlab.me >> /home/coder/.ssh/known_hosts
git config --global init.defaultBranch main
git config --global user.name 'Moby'
git config --global user.email 'moby@local'
cd /home/coder/project
echo ".labspace" >> .gitignore
echo "labspace.yaml" >> .gitignore
rm -rf .git
git init
git remote add origin [email protected]:moby/demo-app.git
git add -A
git commit -m 'Initial commit'
git push -u origin main
gitea-bootstrap:
content: |
#!/bin/bash
echo "Running"
while ! curl -sL http://localhost:3000/user/login > /dev/null; do
sleep 2
done
echo "Gitea is up - proceeding with bootstrap"
# Create the 'moby' user if it doesn't exist
users=$(su-exec git /usr/local/bin/gitea admin user list)
if echo "$$users" | grep -q '^moby '; then
echo "User 'moby' already exists. Skipping account creation."
else
su-exec git /usr/local/bin/gitea admin user create --username moby --password 'moby1234!' --email admin@local --admin --must-change-password=false
# Need to wait a bit for the user to be fully created before proceeding
sleep 5
fi
# Check if demo-app repo exists. Create it if it doesn't.
repo_status=$(curl -s -o /dev/null -w "%{http_code}" http://git.dockerlab.me/api/v1/repos/moby/demo-app)
if [ "$$repo_status" = "404" ]; then
echo "Repository 'moby/demo-app' not found. Creating it..."
curl -s -H "Content-type: application/json" -u 'moby:moby1234!' -d '{"name":"demo-app","private":false}' http://git.dockerlab.me/api/v1/user/repos
echo "Repository 'moby/demo-app' created."
else
echo "Repository 'moby/demo-app' already exists. Skipping creation."
fi
# Create CI secrets if they don't exist
SECRETS_JSON=$(curl -s -u 'moby:moby1234!' http://git.dockerlab.me/api/v1/repos/moby/demo-app/actions/secrets)
if echo "$$keys" | grep -q "DOCKER_USERNAME"; then
echo "CI secrets already exist. Skipping secret creation."
else
curl -s -u 'moby:moby1234!' -X PUT http://git.dockerlab.me/api/v1/repos/moby/demo-app/actions/secrets/DOCKER_USERNAME -H "Content-Type: application/json" -d '{"data":"moby"}'
curl -s -u 'moby:moby1234!' -X PUT http://git.dockerlab.me/api/v1/repos/moby/demo-app/actions/secrets/DOCKER_PASSWORD -H "Content-Type: application/json" -d '{"data":"moby1234!"}'
curl -s -u 'moby:moby1234!' -X PUT http://git.dockerlab.me/api/v1/repos/moby/demo-app/actions/secrets/DOCKER_REGISTRY -H "Content-Type: application/json" -d '{"data":"git.dockerlab.me"}'
echo "CI secrets created."
fi
# Get and store registration token for the runner
TOKEN_JSON=$(curl -s -u 'moby:moby1234!' http://git.dockerlab.me/api/v1/repos/moby/demo-app/actions/runners/registration-token)
REGISTRATION_TOKEN=$(echo $$TOKEN_JSON | grep -o '"token":"[^"]*"' | cut -d'"' -f4)
echo -n $$REGISTRATION_TOKEN > /gitea-outputs/runner_token.txt
# Create SSH key for user 'moby' if it doesn't exist
if [ ! -f /gitea-outputs/moby_id_rsa ]; then
ssh-keygen -t rsa -b 4096 -N "" -f /gitea-outputs/moby_id_rsa
echo "SSH key generated for user 'moby'."
fi
# Add the public key to the user's SSH keys via Gitea API if not already added
keys=$(curl -s -u 'moby:moby1234!' http://git.dockerlab.me/api/v1/user/keys)
if echo "$$keys" | grep -q "moby-key"; then
echo "SSH key already added to user 'moby'. Skipping key addition."
else
pub_key=$(cat /gitea-outputs/moby_id_rsa.pub)
curl -s -u 'moby:moby1234!' http://git.dockerlab.me/api/v1/user/keys -H "Content-Type: application/json" -d "{\"title\":\"moby-key\",\"key\":\"$$pub_key\"}"
echo "SSH key added to user 'moby'."
fi
services:
configurator:
environment:
PROJECT_CLONE_URL: https://github.com/mikesir87/labspace-sdlc-demo
# workspace:
# # Override the default image if desired
# # More details - https://github.com/dockersamples/labspace-infra/blob/main/docs/configuration.md#overriding-the-workspace-image
# image: dockersamples/labspace-workspace-java
# # Override the default ports to publish additional ports you may need
# # More details - https://github.com/dockersamples/labspace-infra/blob/main/docs/configuration.md#overriding-the-workspace-ports
# ports: !override
# - "6274:6274" # Expose the MCP inspector users will launch from inside the Labspace
# - "8080:8080" # The port used by the app
# # Add other environment variables as needed
# environment:
# DANGEROUSLY_OMIT_AUTH: "true" # Skip auth for the MCP Inspector
# Add other models or services your Labspace may need
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 compose -f oci://michaelirwin244/labspace-sdlc-demo:latest upUse the above command to pull and run the Compose file. Learn more.
Traefik, The Cloud Native Edge Router
Pulls
1B+
Stars
3664
Last Updated
1 day
Gitea: Git with a cup of tea - A painless self-hosted Git service.
Pulls
100M+
Stars
1057
Last Updated
about 1 hour
Deprecated Gitea runner. Moved to gitea/runner
Pulls
5M+
Stars
34
Last Updated
5 months