https://github.com/swedishembedded/workstation
Docker based development environment for coding, building and flashing embedded firmware.
https://github.com/swedishembedded/workstation
docker-image embedded-c swedishembedded zephyr
Last synced: 4 months ago
JSON representation
Docker based development environment for coding, building and flashing embedded firmware.
- Host: GitHub
- URL: https://github.com/swedishembedded/workstation
- Owner: swedishembedded
- License: apache-2.0
- Created: 2022-08-05T20:57:13.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2026-02-16T16:42:52.000Z (4 months ago)
- Last Synced: 2026-02-17T00:07:16.616Z (4 months ago)
- Topics: docker-image, embedded-c, swedishembedded, zephyr
- Language: Emacs Lisp
- Homepage: https://swedishembedded.com/sdk
- Size: 37 MB
- Stars: 28
- Watchers: 1
- Forks: 16
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Codeowners: CODEOWNERS
Awesome Lists containing this project
- awesome-zephyr-rtos - Swedish Embedded Platform SDK Docker Image - Docker containers for CI & development. (Tools / Build & Config)
README
# Swedish Embedded Workstation
This is a complete embedded firmware development workstation based on Linux.

- **Base Image (_ci-base_):** contains only the minimal set of software needed for basic development without the toolchains.
- **CI Image (_ci_):** contains toolchains, the zephyr sdk and additional packages needed for ci operations.
- **Developer Image (_zephyr-build_):** includes additional tools that can be useful for Zephyr
development.
- Workstation: a fully integrated development environment with tools for
building additional documentation, emacs, vim etc.
**Multi-Architecture Support**: All images support both `linux/amd64` (x86_64) and `linux/arm64` (ARM64/Apple Silicon) architectures. See [ARM Build Guide](ARM_BUILD_GUIDE.md) for details on building for Apple Silicon Macs.
See [Documentation](doc/index.rst) for more detailed documentation.
It includes:
- Zephyr RTOS base tools included as official Zephyr RTOS docker image
- Docker images: 2 main docker images for CI builds and develop builds.
- Local bootstrapping scripts
- Tmux configuration
- i3wm configuration
- Vim configuration (see [Awesome Vim](https://swedishembedded.com/insights-vim-in-minutes/) article)
## Quick Start
```
docker pull swedishembedded/build:latest
```
## Docker Compose
```
---
version: '3'
services:
sts:
image: swedishembedded/workstation:latest
container_name: sts
stdin_open: true
environment:
- TERM
- DISPLAY
network_mode: host
volumes:
- ~/.ssh/:/home/user/.ssh
```
To start a shell in the newly created environment run:
```
docker-compose up -d
docker exec -ti sts bash
```
## Contact
- Community: https://swedishembedded.com/community
```
docker run -ti -v $HOME/Work/zephyrproject:/workdir \
docker.io/zephyrprojectrtos/zephyr-build:latest
```
#### Building Developer Docker Image
The developer docker image can be built using the following command:
```
docker build -f Dockerfile.devel --build-arg UID=$(id -u) --build-arg GID=$(id -g) -t zephyr-build:v .
```
It can be used for building Zephyr samples and tests by mounting the Zephyr workspace into it:
```
docker run -ti -v :/workdir zephyr-build:v
```
### Usage
#### Building a sample application
Follow the steps below to build and run a sample application:
```
west build -b qemu_x86 samples/hello_world
west build -t run
```
#### Building display sample applications
It is possible to build and run the _native POSIX_ sample applications that produce display outputs
by connecting to the Docker instance using a VNC client.
In order to allow the VNC client to connect to the Docker instance, the port 5900 needs to be
forwarded to the host:
```
docker run -ti -p 5900:5900 -v :/workdir zephyr-build:v
```
Follow the steps below to build a display sample application for the _native POSIX_ board:
```
west build -b native_posix samples/subsys/display/cfb
west build -t run
```
The application display output can be observed by connecting a VNC client to _localhost_ at the
port _5900_. The default VNC password is _zephyr_.
On a Ubuntu host, this can be done by running the following command:
```
vncviewer localhost:5900
```