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:debianbased on Debian Bookworm Slim in 581MBkbuley/basedevcontainer:ubuntubased on Ubuntu LTS in 537MB- 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 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
~/.sshand 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
.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/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 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.
-
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.ymldatabase: image: postgres restart: always environment: POSTGRES_PASSWORD: password
-
In
.devcontainer/devcontainer.jsonchange 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/basedevcontainerwith your own instructions.-
Create a file
.devcontainer/DockerfilewithFROM 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.ymland addbuild: .in the vscode service. -
Open the VS code command palette and choose
Remote-Containers: Rebuild container
-