diff --git a/examples/docker/Dockerfile b/examples/docker/Dockerfile
index 20a5ce19b..9a4df4acd 100644
--- a/examples/docker/Dockerfile
+++ b/examples/docker/Dockerfile
@@ -1,18 +1,38 @@
-FROM node:16-alpine
+FROM node:16.20.2-bookworm-slim as build
 
-RUN mkdir /home/app
-WORKDIR /home/app
-
-RUN apk add --no-cache bash git python3 make pkgconfig libsecret-dev g++
-# Use "bash" as replacement for "sh"
-RUN rm /bin/sh && ln -s /bin/bash /bin/sh
+RUN apt-get update && apt-get install -y \
+    git \
+    python3 \
+    make \
+    pkg-config \
+    libsecret-1-dev \
+    g++ \
+    libx11-dev \
+    libxkbfile-dev
 
 # Build the browser theia-trace-extension application
-COPY example-package.json /home/app/package.json
-RUN npx yarn
+COPY example-package.json /app/tte/package.json
+WORKDIR /app/tte/
+RUN yarn && \
+    npx theia build --app-target=\"browser\" --mode development && \
+    yarn autoclean --init && \
+    echo *.ts >> .yarnclean && \
+    echo *.ts.map >> .yarnclean && \
+    echo *.spec.* >> .yarnclean && \
+    yarn cache clean
+
+FROM node:16.20.2-bookworm-slim
+
+COPY --from=build /app/tte /app/tte
 
-COPY startup.sh /home/app
-RUN ["chmod", "+x", "/home/app/startup.sh"]
+RUN apt-get update && apt-get install -y \
+    libx11-6 \
+    libxkbfile1 \
+    libsecret-1-0 \
+    && rm -rf /var/lib/apt/lists/*
+ENV NODE_ENV production
 
-# Start the service
-ENTRYPOINT ["/home/app/startup.sh"]
+WORKDIR /app/tte
+COPY docker-entrypoint.sh /usr/local/bin
+EXPOSE 4000
+ENTRYPOINT ["docker-entrypoint.sh"]
diff --git a/examples/docker/README.md b/examples/docker/README.md
index 69aabe6f5..6f5a17122 100644
--- a/examples/docker/README.md
+++ b/examples/docker/README.md
@@ -9,8 +9,8 @@ Notes:
   If you want to run a complete application, you will need a service
   running the trace-server (not included here);
 
-- the image will be built using the latest [npm package] of the
-  theia-trace-extension, and not the code in this repo;
+- the image will be built using a specific [npm package] of the
+  theia-trace-extension, and not the latest code in this repo;
 
 - the *example-package.json* file is not named *package.json* because
   at the time this change was proposed building the theia-trace-extension
@@ -20,7 +20,8 @@ Notes:
 
 ## How to build and run
 
-Build the image and name it *tte*:
+Build the image and name it *tte*. Try adding `--network host` in case
+of build failures related to debian packages retrieval:
 
 ```bash
 docker build -t tte .
diff --git a/examples/docker/docker-entrypoint.sh b/examples/docker/docker-entrypoint.sh
new file mode 100755
index 000000000..9d34f091b
--- /dev/null
+++ b/examples/docker/docker-entrypoint.sh
@@ -0,0 +1,2 @@
+#!/usr/bin/env bash
+yarn start --hostname 0.0.0.0 --port 4000
diff --git a/examples/docker/example-package.json b/examples/docker/example-package.json
index f5c86d3e3..9e6527a43 100644
--- a/examples/docker/example-package.json
+++ b/examples/docker/example-package.json
@@ -15,6 +15,9 @@
     }
   },
   "dependencies": {
+    "@emotion/react": "^11.10.5",
+    "@emotion/styled": "^11.10.5",
+    "@mui/material": "^5.10.14",
     "@theia/core": "1.43.1",
     "@theia/editor": "1.43.1",
     "@theia/filesystem": "1.43.1",
@@ -27,9 +30,8 @@
     "@theia/preferences": "1.43.1",
     "@theia/process": "1.43.1",
     "@theia/terminal": "1.43.1",
-    "@theia/vsx-registry": "1.43.1",
     "@theia/workspace": "1.43.1",
-    "theia-traceviewer": "next"
+    "theia-traceviewer": "0.2.0-next.20231206220005.ff0943f.0"
   },
   "devDependencies": {
     "@theia/cli": "1.43.1"
@@ -42,6 +44,5 @@
   "engines": {
     "yarn": "1.0.x || >=1.2.1",
     "node": ">=12.14.1 <17"
-  },
-  "theiaPluginsDir": "../plugins"
+  }
 }
diff --git a/examples/docker/startup.sh b/examples/docker/startup.sh
deleted file mode 100644
index dba278f7a..000000000
--- a/examples/docker/startup.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/bash
-cd /home/app
-npx yarn start --hostname 0.0.0.0 --port 4000