https://github.com/dgkf/devcontainers
An experiment in using containers as language runtime executables
https://github.com/dgkf/devcontainers
Last synced: about 2 months ago
JSON representation
An experiment in using containers as language runtime executables
- Host: GitHub
- URL: https://github.com/dgkf/devcontainers
- Owner: dgkf
- License: mit
- Created: 2022-08-18T23:53:06.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2023-02-24T19:10:20.000Z (about 2 years ago)
- Last Synced: 2025-02-05T03:49:27.681Z (4 months ago)
- Language: Shell
- Size: 42 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# devcontainers
An experiment in using containers as language runtime executables
## Get Started
1. Clone the repo
2. Make language scripts executable (if they aren't already)
3. Add `/launchers` to your `PATH`
4. Try out a language runtime## Goals
- Local-like executable, providing persistent storage for things like package
libraries and full access to the user's home directory.
- Quick and easy set-up of language runtimes
- Relatively engine agnostic (`podman` default with `docker` fallback)
- Leverage publicly maintained images where possible, with minimal additions to
make them operable as a local runtime.## Project Status
The different available executables span a wide range of maturity, primarily
driven by which languages I spend the most time in. Contributions are welcome to
flesh them out further!| Language | Commands | Maturity | Notes |
|---|---|-------|---|
| R | `R`
`Rscript` | :large_blue_circle: :large_blue_circle: :large_blue_circle: | - graphics via web device using [`httpgd`](https://github.com/nx10/httpgd)
- RStudio won't work, as it requires R as a shared library |
| Julia | `julia` | :large_blue_circle: :large_blue_circle: :black_circle: | needs a web-based display target, but I haven't explored it extensively |
| Python | `python`
`pylsp` | :large_blue_circle: :large_blue_circle: :black_circle: | |
| JS | `node`
`npm` | :large_blue_circle: :black_circle: :black_circle: | |
| Rust | `cargo`
`rustfmt`
`rustc`
`rust-analyzer` | :large_blue_circle: :black_circle: :black_circle: | language server crashes frequently |
| Prolog | `prolog` | :large_blue_circle: :black_circle: :black_circle: | |
| APL | `apl` | :large_blue_circle: :black_circle: :black_circle: | |
| Go | `go` | :large_blue_circle: :black_circle: :black_circle: | |
| Java | `jdk` | :large_blue_circle: :black_circle: :black_circle: | |
| C | `clangd` | :large_blue_circle: :black_circle: :black_circle: | |## Customizations
Generally, the executables should behave like a local executable. There are a
few flags that provide extra functionality to work with the containers
themselves.Use `--` to provide your own `CMD`. For example, it's often handy to step into a
shell in the container:```
R -- bash
```To help minimize paramter conflicts with runtime executables, script flags are
prefixed with `---`. Common flags include `---build` to force the image to
re-build, and `---echo` to output the full container launch command, or
`---help` to see other options.```
R ---build ---echo
```