Skip to content

Commit

Permalink
build: add Dockerfile + VS code dev container configuration
Browse files Browse the repository at this point in the history
Adds Dockerfile to provide a container running Debian with all
required packages installed to build and run mecaps demo application.

Adds devcontainer.json so that Dockerfile can be used as
dev container in VS code.

Tested on Debian 12 running X11 with:
- VS code version 1.89.1
- Docker version 26.1.3 (running as rootless)
  https://docs.docker.com/engine/security/rootless/
  • Loading branch information
marcothaller committed Jun 6, 2024
1 parent 7e73369 commit e41286f
Show file tree
Hide file tree
Showing 2 changed files with 69 additions and 0 deletions.
30 changes: 30 additions & 0 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
// README at: https://github.com/devcontainers/templates/tree/main/src/docker-existing-dockerfile
{
"name": "MECAPS Dockerfile",
"build": {
// Sets the run context to one level up instead of the .devcontainer folder.
"context": "..",
"dockerfile": "../Dockerfile"
},

// Mount X11 UDS directory to allow for running GUIs from inside the container
"mounts": [ "source=/tmp/.X11-unix/,target=/tmp/.X11-unix/,type=bind" ],
// Set DISPLAY environment variable non-statically (using `remoteEnv` instead of `containerEnv`)
"remoteEnv": { "DISPLAY": "${localEnv:DISPLAY}" },

// Optional: Setup VNC (requires complementary config in Dockerfile to be enabled also)
// "forwardPorts": [5900], // default VNC server port

"customizations": {
"vscode": {
"extensions": [
"llvm-vs-code-extensions.vscode-clangd",
"ms-vscode.cmake-tools",
"ms-vscode.cpptools",
"Slint.slint",
"vadimcn.vscode-lldb"
]
}
}
}
39 changes: 39 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
FROM debian:bookworm-slim

RUN apt-get update --quiet && \
apt-get install --assume-yes \
# minimal build essentials
cmake \
curl \
g++ \
git \
ninja-build \
wget \
# mecaps / kdutils specific pkgs
libcurlpp-dev \
libmosquittopp-dev \
libwayland-dev \
wayland-scanner++ \
wayland-protocols \
# slint specific pkgs
libfontconfig-dev \
libxcb-shape0-dev \
libxcb-xfixes0-dev \
libxcb-xkb-dev \
libxkbcommon-dev \
libxkbcommon-x11-dev \
qtbase5-dev

# Install slint from binary
ARG SLINT_VERSION=1.6.0
ENV SLINT_INSTALL_DIR=/usr/src/slint
WORKDIR $SLINT_INSTALL_DIR
RUN wget --quiet -O - https://github.com/slint-ui/slint/releases/download/v$SLINT_VERSION/Slint-cpp-$SLINT_VERSION-Linux-x86_64.tar.gz | tar xvzf - --strip-components=1

# Set CMake prefix path
ENV CMAKE_PREFIX_PATH=$SLINT_INSTALL_DIR

# Optional: Setup VNC (requires complementary config in devcontainer.json to be enabled also)
# (Configures slint to use Qt backend and sets Qt Platform Plugin to VNC)
# ENV SLINT_BACKEND=qt
# ENV QT_QPA_PLATFORM=vnc

0 comments on commit e41286f

Please sign in to comment.