Base Alpine development container for Visual Studio Code, used as base image by other images
kbuley/basedevcontainer:alpine
(or:latest
) based on Alpine 3.19 in 873MBkbuley/basedevcontainer:debian
based on Debian Bookworm Slim in 581MBkbuley/basedevcontainer:ubuntu
based on Ubuntu LTS in 537MB- All images are compatible with
amd64
,386
,arm64
,armv7
,armv6
andppc64le
CPU architectures - Contains the packages:
libstdc++
: needed by the VS code serverzsh
: main shell instead of/bin/sh
git
: interact with Git repositoriesopenssh-client
: use SSH keysnano
: edit files from the terminalneovim
: vim, but even better
- Contains the binaries:
- 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
- Supports SSH keys with Linux, OSX
- Docker installed and running
- If you don't use Linux, share the directories
~/.ssh
and the directory of your project with Docker Desktop
- If you don't use Linux, share the directories
- Docker Compose installed
- VS code installed
- VS code remote containers extension installed
-
Download this repository and put the
.devcontainer
directory 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/kbuley/basedevcontainer/master/.devcontainer/devcontainer.json wget -q https://raw.githubusercontent.com/kbuley/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
Remote-Containers: Open Folder in Container...
and choose your project directory
- You can change the
"postCreateCommand"
to be relevant to your situation. In example it could beecho "downloading" && npm i
to 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.
-
You can publish a port to access it from your host
-
Add containers to be launched with your development container. In example, let's add a postgres database.
-
Add this block to
.devcontainer/docker-compose.yml
database: image: postgres restart: always environment: POSTGRES_PASSWORD: password
-
In
.devcontainer/devcontainer.json
change the line"runServices": ["vscode"],
to"runServices": ["vscode", "database"],
-
In the VS code command palette, rebuild the container
-
You can build and extend the Docker development image to suit your needs.
-
You can build the development image yourself:
docker build -t kbuley/basedevcontainer -f alpine.Dockerfile https://github.com/kbuley/basedevcontainer.git
-
You can extend the Docker image
kbuley/basedevcontainer
with your own instructions.-
Create a file
.devcontainer/Dockerfile
withFROM kbuley/basedevcontainer
-
Append instructions to the Dockerfile created. For example:
-
Add more Go packages and add an alias
FROM kbuley/basedevcontainer COPY . . RUN echo "alias ls='ls -al'" >> ~/.zshrc
-
Add some Alpine packages, you will need to switch to
root
:FROM kbuley/basedevcontainer USER root RUN apk add bind-tools USER vscode
-
-
Modify
.devcontainer/docker-compose.yml
and addbuild: .
in the vscode service. -
Open the VS code command palette and choose
Remote-Containers: Rebuild container
-