diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000000000000000000000000000000000000..a742db5f1f104a5abaf41721986786311aea240c
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,10 @@
+include:
+- project: docker-images/templates
+  ref: master
+  file: devcontainer_images.gitlab-ci.yml
+
+build:
+  extends: .build_image_job_template
+  variables:
+    IMAGE_BASENAME: ${IMAGE_PREFIX}/devcontainer-dotnet
+    IMAGE_NAME: ${IMAGE_BASENAME}:8.0
diff --git a/.vscode/tasks.json b/.vscode/tasks.json
new file mode 100644
index 0000000000000000000000000000000000000000..ed4a0aa21642c7e53f0de3c9b673e112c636cc8a
--- /dev/null
+++ b/.vscode/tasks.json
@@ -0,0 +1,15 @@
+{
+    // See https://go.microsoft.com/fwlink/?LinkId=733558
+    // for the documentation about the tasks.json format
+    "version": "2.0.0",
+    "tasks": [
+        {
+            "label": "docker build",
+            "command": "docker",
+            "args": [
+                "build",
+                "."
+            ]
+        }
+    ]
+}
diff --git a/devcontainer_example.json b/devcontainer_example.json
new file mode 100644
index 0000000000000000000000000000000000000000..55ab93ac18f1077bbc87629818737826e4f673da
--- /dev/null
+++ b/devcontainer_example.json
@@ -0,0 +1,20 @@
+{
+    "name": ".NET",
+    "workspaceFolder": "/workdir",
+    "workspaceMount": "source=${localWorkspaceFolder},target=/workdir,type=bind,consistency=delegated",
+    "remoteUser": "vscode",
+    "image": "andrijoos/devcontainer-dotnet:8.0",
+    "customizations": {
+        "vscode": {
+            "extensions": [
+                "ms-azuretools.vscode-docker",
+                "ms-dotnettools.csdevkit",
+                "hbenl.vscode-test-explorer"
+            ]
+        }
+    },
+    "containerEnv": {
+        "SHELL": "/bin/bash"
+    },
+    "postCreateCommand": "dotnet restore"
+}