Show HN: Repro, disposable Docker env for GitHub issues(pip install repro-cli)

sukhdevth_1 pts0 comments

GitHub - SukhdevThukral/repro: Disposable Docker environments for any GitHub issue. One command. · GitHub

/" data-turbo-transient="true" />

Skip to content

Type / to search

Sign in<br>Sign upAppearance settings

You signed in with another tab or window. Reload to refresh your session.<br>You signed out in another tab or window. Reload to refresh your session.<br>You switched accounts on another tab or window. Reload to refresh your session.

Dismiss alert

{{ message }}

SukhdevThukral

repro

Public

Notifications<br>You must be signed in to change notification settings

Fork

Star

main

BranchesTags

Go to file

CodeOpen more actions menu

Folders and files<br>NameNameLast commit message<br>Last commit date<br>Latest commit

History<br>42 Commits<br>42 Commits

app

app

repro

repro

tests

tests

.gitignore

.gitignore

LICENSE

LICENSE

README.md

README.md

pyproject.toml

pyproject.toml

repro.py

repro.py

requirements.txt

requirements.txt

View all files

Repository files navigation

REPRO

Disposable Docker environments for any GitHub issue.<br>One command. No setup.

pip install repro-cli<br>repro https://github.com/org/repo/issues/42

That's it, your terminal boots an isolated sandbox - repo cloned, dependencies installed and IF you have VS Code, it opens automatically attached directly to the container so you get a real editor and a single unified terminal, not just a shell. Type exit and the container disappears. Your files stay on disk, exactly where they were.

Install

pip install repro-cli

Requirements:

Python 3.9+

Docker (INSTALLED AND RUNNING)

[VS Code] (optional, but recommended - enables the unified editor/terminal experience below)

Usage

# Open a sandbox for any publish GitHub issue<br>repro https://github.com/org/repo/issues/123

#Forward a port (e.g. to view a web app running inside the sandbox)<br>repro https://github.com/org/repo/issues/123 -p 3000

# Map a different host port to a container port<br>repro https://github.com/org/repo/issues/123 -p 8080:3000

# Private repos - pass a GitHub token<br>repro https://github.com/org/private-repo/issues/7 --token ghp_xxx

#Or set it once as an env var instead of typing it every single time!<br>export DEVSANDBOX_GITHUB_TOKEN=ghp_xxx<br>repro https://github.com/org/private-repo/issues/7

# Skip auto-opening an editor<br>repro https://github.com/org/repo/issues/123 --no-editor

#Help<br>repro --help

What it does

Parses the GitHub issue URL

Detects the repo's runtime - Node, Python, Go, Rust, Ruby, PHP, Java, or a devcontainer, based on whats actually in the repo.

Spins up a disposable, isolated Docker container with the right base image.

Bind-mounts a real folder on your machine into the container, so nothing is trapped - files persist after you exit

Clones the repo directly into that shared folder and install dependencies

Attaches VS Code directly to the running container (auto-installing the Dev Containers extension if needed) - one window, one terminal, running inside the sandbox.

Destroys the container the moment you exit. Your edited files remain exactly where they were.

The unified editor experience

Real editor — VS Code attaches directly into the container, so its built-in terminal is the sandbox shell. No second window to juggle.

Real persistence — because the folder is bind-mounted, not just cloned inside the container, your work survives after exit. Nothing is lost.<br>If VS Code isn't installed, repro falls back gracefully — you still get a real folder path printed at the end, ready to open in whatever editor you use.

Supported runtimes

File detected<br>Runtime<br>Base image

package.json<br>Node.js<br>node:20-alpine

yarn.lock<br>Node.js (yarn)<br>node:20-alpine

pnpm-lock.yaml<br>Node.js (pnpm)<br>node:20-alpine

requirements.txt<br>Python<br>python:3.12-slim

pyproject.toml<br>Python<br>python:3.12-slim

Pipfile<br>Python (pipenv)<br>python:3.12-slim

go.mod<br>Go<br>golang:1.21-alpine

Cargo.toml<br>Rust<br>rust:1.75-slim

Gemfile<br>Ruby<br>ruby:3.3-slim

composer.json<br>PHP<br>php:8.3-cli

pom.xml<br>Java (Maven)<br>maven:3.9-eclipse-temurin-21

build.gradle<br>Java (Gradle)<br>gradle:8-jdk21

.devcontainer<br>devcontainer<br>MS universal image

(none matched)<br>Universal fallback<br>ubuntu:22.04

The GitHub App

Install repro-sandbox-bot on any repo and it automatically comments the exact repro command on every new issue - so contributors never have to think about setup.

🏖 Open this issue in DevSandbox

Spin up a disposable Docker environment with this repo already checked out:

repro https://github.com/org/repo/issues/42

Don't have repro yet? Install it here.

Comment /sandbox on any issue to get this again.

You can also trigger it on demand by commenting /sandbox on any issue. The bot runs 24/7, independent of your machine.

Contributing

PRs welcome. Open an issue first for anything beyond small fixes - and yes, you can use repro itself to work on repro.

License

MIT

About<br>Disposable Docker environments for any GitHub issue. One...

repro github repo issue issues container

Related Articles