{"id":23649522,"url":"https://github.com/bkahlert/build-runner","last_synced_at":"2026-04-14T04:31:29.817Z","repository":{"id":40480119,"uuid":"407995026","full_name":"bkahlert/build-runner","owner":"bkahlert","description":"Multiplatform Alpine based SSH accessible Docker image with Docker CLI and OpenJDK 11 installed","archived":false,"fork":false,"pushed_at":"2023-04-05T17:58:01.000Z","size":91,"stargazers_count":0,"open_issues_count":5,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-03-19T02:21:12.196Z","etag":null,"topics":["docker","docker-image","java","ssh"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bkahlert.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"custom":"paypal.me/bkahlert"}},"created_at":"2021-09-19T00:15:07.000Z","updated_at":"2021-12-17T01:27:50.000Z","dependencies_parsed_at":"2025-05-19T23:10:48.434Z","dependency_job_id":null,"html_url":"https://github.com/bkahlert/build-runner","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/bkahlert/build-runner","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bkahlert%2Fbuild-runner","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bkahlert%2Fbuild-runner/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bkahlert%2Fbuild-runner/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bkahlert%2Fbuild-runner/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bkahlert","download_url":"https://codeload.github.com/bkahlert/build-runner/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bkahlert%2Fbuild-runner/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31782736,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-14T02:24:21.117Z","status":"ssl_error","status_checked_at":"2026-04-14T02:24:20.627Z","response_time":153,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","docker-image","java","ssh"],"created_at":"2024-12-28T15:39:04.154Z","updated_at":"2026-04-14T04:31:29.792Z","avatar_url":"https://github.com/bkahlert.png","language":"Shell","funding_links":["paypal.me/bkahlert","https://www.paypal.me/bkahlert"],"categories":[],"sub_categories":[],"readme":"# bkahlert/build-runner [![Build Status](https://img.shields.io/github/workflow/status/bkahlert/build-runner/build?label=Build\u0026logo=github\u0026logoColor=fff)](https://github.com/bkahlert/build-runner/actions/workflows/build.yml) [![Repository Size](https://img.shields.io/github/repo-size/bkahlert/build-runner?color=01818F\u0026label=Repo%20Size\u0026logo=Git\u0026logoColor=fff)](https://github.com/bkahlert/build-runner) [![Repository Size](https://img.shields.io/github/license/bkahlert/build-runner?color=29ABE2\u0026label=License\u0026logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1OTAgNTkwIiAgeG1sbnM6dj0iaHR0cHM6Ly92ZWN0YS5pby9uYW5vIj48cGF0aCBkPSJNMzI4LjcgMzk1LjhjNDAuMy0xNSA2MS40LTQzLjggNjEuNC05My40UzM0OC4zIDIwOSAyOTYgMjA4LjljLTU1LjEtLjEtOTYuOCA0My42LTk2LjEgOTMuNXMyNC40IDgzIDYyLjQgOTQuOUwxOTUgNTYzQzEwNC44IDUzOS43IDEzLjIgNDMzLjMgMTMuMiAzMDIuNCAxMy4yIDE0Ny4zIDEzNy44IDIxLjUgMjk0IDIxLjVzMjgyLjggMTI1LjcgMjgyLjggMjgwLjhjMCAxMzMtOTAuOCAyMzcuOS0xODIuOSAyNjEuMWwtNjUuMi0xNjcuNnoiIGZpbGw9IiNmZmYiIHN0cm9rZT0iI2ZmZiIgc3Ryb2tlLXdpZHRoPSIxOS4yMTIiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48L3N2Zz4%3D)](https://github.com/bkahlert/build-runner/blob/master/LICENSE)\n\n## About\n\n**bkahlert/build-runner** is a multiplatform Alpine based SSH accessible Docker image with Docker CLI and OpenJDK 11 installed. It is compatible with IntelliJ\nIDEA [run targets feature](https://www.jetbrains.com/help/idea/run-targets.html#target-types).\n\n[![recorded terminal session demonstrating a successful SSH connection to a running instance of bkahlert/build-runner](docs/ssh.svg \"SSH connection to a running instance of bkahlert/build-runner\")  \n*SSH connection to a running instance of bkahlert/build-runner*](../../raw/master/docs/ssh.svg)\n\n## Build locally\n\n```shell\ngit clone https://github.com/bkahlert/build-runner.git\ncd build-runner\n\n# Build image and output to docker (default)\ndocker buildx bake\n\n# Build multi-platform image\ndocker buildx bake image-all\n```\n\n## Image\n\n* [Docker Hub](https://hub.docker.com/r/bkahlert/build-runner/) `bkahlert/build-runner`\n* [GitHub Container Registry](https://github.com/users/bkahlert/packages/container/package/build-runner) `ghcr.io/bkahlert/build-runner`\n\nFollowing platforms for this image are available:\n\n* linux/amd64\n* linux/arm64/v8\n\n## Usage\n\n### Run as an application\n\nIf you pass arguments to the container, they will be treated like a regular command line. The container will run the command line and terminate.\n\n```shell\ndocker run --rm -it \\\n  -v \"$(pwd):$(pwd)\" \\\n  -w \"$(pwd)\" \\\n  bkahlert/build-runner:edge \\\n  javac --version\n```\n\n### Run as a service / SSH server\n\nStarting the container without any arguments will launch an SSH server that will listen for connections.\n\nBy default, authentication uses public key. Since no public key is provided in the `bkahlert/build-runner`,\na public key must be provided at startup:\n\n```shell\n# start container\ndocker run -d --rm \\\n  -e AUTHORIZED_KEYS=\"$(cat ~/.ssh/id_rsa.pub)\" \\\n  -v \"$(pwd):$(pwd)\" \\\n  -w \"$(pwd)\" \\\n  -p 2022:2022 \\\n  \"build-runner:edge\"\n\n# connect\nssh \\\n  -i ~/.ssh/id_rsa \\\n  -o StrictHostKeyChecking=no \\\n  -o UserKnownHostsFile=/dev/null \\\n  -o LogLevel=ERROR \\\n  -p 2022 \\\n  \"runner@localhost\" \\\n  id\n```\n\nAlternatively a password can be provided which enables password and disables public key authentication:\n\n```shell\n# start container\ndocker run -d --rm \\\n  -e PASSWORD=pass1234 \\\n  -v \"$(pwd):$(pwd)\" \\\n  -w \"$(pwd)\" \\\n  -p 2022:2022 \\\n  \"build-runner:edge\"\n\n# connect\nsshpass -p \"pass1234\" ssh \\\n  -o StrictHostKeyChecking=no \\\n  -o UserKnownHostsFile=/dev/null \\\n  -o LogLevel=ERROR \\\n  -p 2022 \\\n  \"runner@localhost\" \\\n  id\n```\n\nSee [configuration](#configuration) to set the public key or password during build time. \n\n## Configuration\n\nThis image can be configured using the following options of which all but `APP_USER` and `APP_GROUP` exist as both—build argument and environment variable.  \nYou should go for build arguments if you want to set custom defaults you don't intend to change (often). Environment variables will overrule any existing\nconfiguration on each container start.\n\n- `APP_USER` Name of the main user (default: `runner`)\n- `APP_GROUP` Name of the main user's group (default: `runner`)\n- `DEBUG` Whether to log debug information (default: `0`)\n- `TZ` Timezone the container runs in (default: `UTC`)\n- `LANG` Language/locale to use (default: `C.UTF-8`)\n- `PUID` User ID of the `runner` user (default: `1000`)\n- `PGID` Group ID of the `runner` group (default: `1000`)\n- `AUTHORIZED_KEYS` Public key(s) that can be used to log in via SSH as `runner`\n- `PASSWORD` Password of `runner` (default: `runner`)\n\n\u003e 🔐 Specifying authorized key(s) will automatically disable password-based authentication. An eventually also configured password will be ignored.  \n\u003e Setting authorized key(s) to an empty string, will re-enable the password-based authentication with either the provided or otherwise a randomly generated password.\n\n```shell\n# Build single image with build argument AUTHORIZED_KEYS\ndocker buildx bake --set \"*.args.AUTHORIZED_KEYS=$(cat ~/.ssh/id_rsa.pub)\"\n\n# Build multi-platform image with build argument AUTHORIZED_KEYS\ndocker buildx bake image-all --set \"*.args.AUTHORIZED_KEYS=$(cat ~/.ssh/id_rsa.pub)\"\n\n# Start container with environment variable AUTHORIZED_KEYS\ndocker run --rm \\\n  -e AUTHORIZED_KEYS=\"$(cat ~/.ssh/id_rsa.pub)\" \\\n  -v \"$(pwd):$(pwd)\" \\\n  -w \"$(pwd)\" \\\n  -p 2022:2022 \\\n  build-runner:local\n```\n\n## Testing\n\n```shell\ngit clone https://github.com/bkahlert/build-runner.git\ncd build-runner\n\n# Use Bats wrapper to run tests\ncurl -LfsS https://git.io/batsw \\\n  | DOCKER_BAKE=\"--set '*.tags=test'\" \"$SHELL\" -s -- --batsw:-e --batsw:BUILD_TAG=test test\n```\n\n[Bats Wrapper](https://github.com/bkahlert/bats-wrapper) is a self-contained wrapper to run tests based on the Bash testing\nframework [Bats](https://github.com/bats-core/bats-core).\n\n\u003e 💡 To accelerate testing, the Bats Wrapper checks if any test is prefixed with a capital X and if so, only runs those tests.\n\n## Troubleshooting\n\n- To avoid permission problems with generated files, you can use your local user/group ID (see `PUID`/`PGID`).\n- If you need access to Docker, its command line interface is already installed.  \n  You can control your host instance by mounting `/var/run/docker.sock`.\n\n```shell\ndocker run -it --rm \\\n  -e PUID=\"$(id -u)\" \\\n  -e PGID=\"$(id -g)\" \\\n  -v /var/run/docker.sock:/var/run/docker.sock \\\n  -v \"$PWD\":\"$PWD\" \\\n  -w \"$PWD\" \\\n  bkahlert/build-runner:edge\n```\n\n## Contributing\n\nWant to contribute? Awesome! The most basic way to show your support is to star the project, or to raise issues. You can also support this project by making\na [PayPal donation](https://www.paypal.me/bkahlert) to ensure this journey continues indefinitely!\n\nThanks again for your support, it is much appreciated! :pray:\n\n## License\n\nMIT. See [LICENSE](LICENSE) for more details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbkahlert%2Fbuild-runner","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbkahlert%2Fbuild-runner","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbkahlert%2Fbuild-runner/lists"}