envbuilder
packagemoduleThis package is not in the latest version of its module.
Details
Validgo.mod file
The Go module system was introduced in Go 1.11 and is the official dependency management solution for Go.
Redistributable license
Redistributable licenses place minimal restrictions on how software can be used, modified, and redistributed.
Tagged version
Modules with tagged versions give importers more predictable builds.
Stable version
When a project reaches major version v1 it is considered stable.
- Learn more about best practices
Repository
Links
README¶
Envbuilder
(Video created usingasciinema andagg)
Build development environments from a Dockerfile on Docker, Kubernetes, and OpenShift. Allow developers to modify their environment in a tight feedback loop.
- Supports
devcontainer.jsonandDockerfile - Cache image layers with registries for speedy builds
- Runs on Kubernetes, Docker, and OpenShift
Getting Started
The easiest way to get started is by running theenvbuilder Docker container that clones a repository specified byENVBUILDER_GIT_URL, builds the image from a Dockerfile ordevcontainer.json, and runs the$ENVBUILDER_INIT_SCRIPT in the freshly built container.
Tips:
- The
/tmp/envbuilderdirectory persists demo data between commands. You can choose a different directory if needed.- To clone a different branch, you append it to
ENVBUILDER_GIT_URLin the form#refs/heads/my-branch. For example:https://github.com/coder/envbuilder-starter-devcontainer#refs/heads/boring-prompt.
docker run -it --rm -v /tmp/envbuilder:/workspaces -e ENVBUILDER_GIT_URL=https://github.com/coder/envbuilder-starter-devcontainer -e ENVBUILDER_INIT_SCRIPT=bash ghcr.io/coder/envbuilderEdit.devcontainer/Dockerfile to addhtop:
vim .devcontainer/Dockerfile- RUN apt-get install vim sudo -y+ RUN apt-get install vim sudo htop -yExit the container and re-run thedocker run command. After the build completes,htop should be available in the container! 🥳
To explore more examples, tips, and advanced usage, check out the following guides:
- Using Local Files
- Usage with Coder
- Container Registry Authentication
- Git Authentication
- Caching
- Custom Certificates & Proxies
- Users
Setup Script
TheENVBUILDER_SETUP_SCRIPT environment variable dynamically configures the user and init command (PID 1) after the container build process.
Note:
TARGET_USERis passed to the setup script to specify who will executeENVBUILDER_INIT_COMMAND(e.g.,code).
Write the following to$ENVBUILDER_ENV to shape the container's init process:
TARGET_USER: Identifies theENVBUILDER_INIT_COMMANDexecutor (e.g.,root).ENVBUILDER_INIT_COMMAND: Defines the command executed byTARGET_USER(e.g./bin/bash).ENVBUILDER_INIT_ARGS: Arguments provided toENVBUILDER_INIT_COMMAND(e.g.,-c 'sleep infinity').
# init.sh - Change the init if systemd existsif command -v systemd >/dev/null; then echo "Hey 👋 $TARGET_USER" echo ENVBUILDER_INIT_COMMAND=systemd >> $ENVBUILDER_ENVelse echo ENVBUILDER_INIT_COMMAND=bash >> $ENVBUILDER_ENVfi# Run envbuilder with the setup scriptdocker run -it --rm -v ./:/some-dir -e ENVBUILDER_SETUP_SCRIPT=/some-dir/init.sh ...Environment Variables
You can see all the supported environment variables inthis document.
Development Containers
This document keeps track of what parts of the Dev Container specification Envbuilder currently supports.
Feel free tocreate a new issue if you'd like Envbuilder to support a particular feature.
Devfile
Devfiles automate and simplify development by adopting existing devfiles available in thepublic community registry.
Issue:#113
Contributing
Buildingenvbuilder currentlyrequires a Linux system.
On macOS or Windows systems, we recommend using a VM or the provided.devcontainer for development.
Additional Requirements:
go 1.22make- Docker daemon (for running tests)
Makefile targets:
build: Builds and tagsenvbuilder:latestfor your current architecture.develop: Runsenvbuilder:latestagainst a sample Git repository.test: Runs tests.test-registry: Stands up a local registry for caching images used in tests.docs/env-variables.md: Updated theenvironment variables documentation.
Documentation¶
Index¶
Constants¶
This section is empty.
Variables¶
var ErrNoFallbackImage =errors.New("no fallback image has been specified")ErrNoFallbackImage is returned when no fallback image has been specified.
Functions¶
Types¶
typeDockerConfig¶added inv0.0.3
type DockerConfig =configfile.ConfigFile
DockerConfig represents the Docker configuration file.