qdm12/basedevcontainer
Base development Docker image used by other development Docker images
Base Dev Container
Base Alpine development container for Visual Studio Code, used as base image by other images
Features
qmcgaw/basedevcontainer:alpine(or:latest) based on Alpine 3.22 in 230MBqmcgaw/basedevcontainer:debianbased on Debian Buster Slim in 376MB- All images are compatible with
amd64,386,arm64,armv7,armv6andppc64leCPU architectures - Contains the packages:
libstdc++: needed by the VS code serverzsh: main shell instead of/bin/shgit: interact with Git repositoriesopenssh-client: use SSH keysnano: edit files from the terminal
- Contains the binaries:
gh: interact with Github with the terminaldockerdocker-composeanddocker composedocker plugindocker buildxdocker pluginbitdevtainr
- Custom integrated terminal
- Based on zsh and oh-my-zsh
- Uses the Powerlevel10k theme
- With Logo LS as a replacement for
ls- Shows information on login; easily extensible
- Cross platform
- Easily bind mount your SSH keys to use with git
- Manage your host Docker from within the dev container on Linux, MacOS and Windows
- Docker uses buildkit by default, with the latest Docker client binary.
- Extensible with docker-compose.yml
- Supports SSH keys with Linux, OSX and Windows
Requirements
- Docker installed and running
- If you use OSX, share the directory
~/.sshand the directory of your project with Docker Desktop
- If you use OSX, share the directory
- Docker Compose installed
- VS code installed
- VS code dev containers extension installed
Setup for a project
-
Download this repository and put the
.devcontainerdirectory in your project.
Alternatively, use this shell script from your project path# we assume you are in /yourpath/myproject mkdir .devcontainer cd .devcontainer wget -q https://raw.githubusercontent.com/qdm12/basedevcontainer/master/.devcontainer/devcontainer.json wget -q https://raw.githubusercontent.com/qdm12/basedevcontainer/master/.devcontainer/docker-compose.yml
-
If you have a .vscode/settings.json, eventually move the settings to .devcontainer/devcontainer.json in the
"settings"section as .vscode/settings.json take precedence over the settings defined in .devcontainer/devcontainer.json. -
Open the command palette in Visual Studio Code (CTRL+SHIFT+P) and select
Dev Containers: Open Folder in Container...and choose your project directory
More
devcontainer.json
- You can change the
"postCreateCommand"to be relevant to your situation. In example it could beecho "downloading" && npm ito combine two commands - You can change the extensions installed in the Docker image within the
"extensions"array - VScode settings can be changed or added in the
"settings"object.
docker-compose.yml
- Add containers to be launched with your development container. In example, let's add a postgres database.
-
Add this block to
.devcontainer/docker-compose.ymldatabase: image: postgres restart: always environment: POSTGRES_PASSWORD: password
-
Open the command palette in Visual Studio Code (CTRL+SHIFT+P)
-
Select
Dev-Containers: Rebuild Container
-
Development image
You can build and extend the Docker development image to suit your needs.
-
You can build the development image yourself:
docker build -t qmcgaw/basedevcontainer -f alpine.Dockerfile https://github.com/qdm12/basedevcontainer.git
-
You can extend the Docker image
qmcgaw/basedevcontainerwith your own instructions.-
Create a file
.devcontainer/DockerfilewithFROM qmcgaw/basedevcontainer -
Append instructions to the Dockerfile created. For example:
-
Add more Go packages and add an alias
FROM qmcgaw/basedevcontainer COPY . . RUN echo "alias ls='ls -al'" >> ~/.zshrc
-
Add some Alpine packages:
FROM qmcgaw/basedevcontainer RUN apk add bind-tools
-
-
Modify
.devcontainer/docker-compose.ymland addbuild: .in the vscode service. -
Open the command palette in Visual Studio Code (CTRL+SHIFT+P)
-
Select
Dev-Containers: Rebuild Container
-
-
You can bind mount a file at
/root/.welcome.shto modify the welcome message.
TODO
-
bit completeyes flag - Firewall, see this
- Extend another docker-compose.yml
- Fonts for host OS for the VS code shell
- Gifs and images
- Install VS code server and extensions in image, waiting for this issue