sha256:cc085b33fd3e1eb2114ff8673d7c2a352291e2baedece3085a51c52e6c06de1d
Last pushed
about 1 year by michaelirwin244
Type
Compose
Manifest digest
sha256:cc085b33fd3e1eb2114ff8673d7c2a352291e2baedece3085a51c52e6c06de1d
services:
project-setup:
image: michaelirwin244/workshop-poc:setup
pull_policy: always
volumes:
- project:/project
environment:
PROJECT_CLONE_URL: https://github.com/mikesir87/workshop-poc-content
instructions:
image: michaelirwin244/workshop-poc:markdown-server
pull_policy: always
ports:
- 8000:3000
volumes:
- project:/project
environment:
ROOT_DIR: /project/docs
SITE_TITLE: Workshop POC
depends_on:
project-setup:
condition: service_completed_successfully
workspace:
image: michaelirwin244/workshop-poc:workspace
pull_policy: always
command: /home/coder/project
depends_on:
project-setup:
condition: service_completed_successfully
ports:
- 8085:8085 # For the IDE itself
- 3000:3000 # For the application running in the IDE
environment:
TESTCONTAINERS_HOST_OVERRIDE: localhost
volumes:
- socket-proxy:/var/run
- type: volume
source: project
target: /home/coder/project
volume:
nocopy: true
subpath: workspace
host-forwarding:
image: michaelirwin244/workshop-poc:host-port-republisher
pull_policy: always
volumes:
- socket-proxy:/var/run
network_mode: service:workspace
environment:
LABEL_FILTER: demo-setup=true
depends_on:
- workspace
- socket-proxy
workspace-cleaner:
image: michaelirwin244/workshop-poc:workspace-cleaner
pull_policy: always
volumes:
- socket-proxy:/var/run
environment:
LABEL_FILTER: demo-setup=true
depends_on:
- socket-proxy
socket-proxy:
image: mikesir87/docker-socket-proxy
pull_policy: always
# image: socket-proxy
# use_api_socket: true
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 project volume, since the project
# is running out of a volume.
- type: mountPath
from: /home/coder/project
to: project/workspace
# 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: socket-proxy/docker.sock
# Add labels to all newly created objects
- type: addLabels
labels:
demo-setup: "true"
- type: addToNetwork
networks:
- workshop-poc
gates:
- type: mountSource
allowedSources:
- project
- socket-proxy
- buildx_buildkit_default_state
responseFilters:
# Only return objects with the labels we mutated on
- type: labelFilter
requiredLabels:
demo-setup: "true"
LISTEN_SOCKET_PATH: /tmp/proxy/docker.sock
# pre_stop:
# - command: docker rm -f $(docker ps -aq --filter "label=demo-setup=true") || true
# - command: docker volume rm -f $(docker volume ls -q --filter "label=demo-setup=true") || true
# - command: docker network rm -f $(docker network ls -q --filter "label=demo-setup=true") || true
volumes:
socket-proxy:
name: socket-proxy
project:
name: project
networks:
default:
name: workshop-pocdocker compose -f oci://michaelirwin244/workshop-poc:compose upUse the above command to pull and run the Compose file. Learn more.