diff --git a/docker/osm-nushell-krm-functions/Dockerfile b/docker/osm-nushell-krm-functions/Dockerfile
new file mode 100644
index 0000000..e3f1db3
--- /dev/null
+++ b/docker/osm-nushell-krm-functions/Dockerfile
@@ -0,0 +1,80 @@
+#######################################################################################
+# Copyright ETSI Contributors and Others.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+# implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#######################################################################################
+
+FROM alpine:3.21.3 
+# FROM ghcr.io/nushell/nushell:0.104.0-alpine
+
+ARG NUSHELL_VERSION=0.104.1
+
+
+# Install Nushell for Alpine
+#-----------------------------------------------------
+#
+RUN echo '/usr/bin/nu' >> /etc/shells \
+    && adduser -D -s /usr/bin/nu nushell \
+    && mkdir -p /home/nushell/.config/nushell/ \
+    && cd /tmp \
+    && wget "https://github.com/nushell/nushell/releases/download/${NUSHELL_VERSION}/nu-${NUSHELL_VERSION}-x86_64-unknown-linux-musl.tar.gz" \
+    && mkdir nu-${NUSHELL_VERSION} && tar xvf nu-*.tar.gz --directory=nu-${NUSHELL_VERSION} \
+    && cp -aR nu-${NUSHELL_VERSION}/**/* /usr/bin/ \
+    # Setup default config file for nushell
+    && cd /home/nushell/.config/nushell \
+    && chmod +x /usr/bin/nu \
+    && chown -R nushell:nushell /home/nushell/.config/nushell \
+    # Reset Nushell config to default
+    && su -c 'config reset -w' nushell \
+    && ls /usr/bin/nu_plugin* \
+    | xargs -I{} su -c 'plugin add {}' nushell \
+    && rm -rf /tmp/*
+#
+#-----------------------------------------------------
+
+# Install dependencies
+RUN apk add --no-cache \
+        age \
+        envsubst \
+        git \
+        kubectl \
+        sops && \
+    # Install dependencies unavailable at Alpine repos
+    wget https://github.com/kptdev/kpt/releases/download/v1.0.0-beta.57/kpt_linux_amd64 -O kpt && \
+        chmod +x kpt && \
+        mv kpt /usr/local/bin/ && \
+    # Create default folders and files
+    mkdir -p /repos && \
+        chmod 755 /repos && \
+    mkdir -p /model/parameters/clear && \
+    mkdir -p /model/parameters/secret && \
+        chmod -R 755 /model && \
+        echo '{}' > /model/app_instance_model.yaml && \
+        echo '{}' > /model/parameters/clear/environment.yaml && \
+        echo '{}' > /model/parameters/secret/environment.yaml
+
+
+# Become the standard user
+USER nushell
+WORKDIR /app
+
+# Add libraries and helper scripts
+COPY --chown=nushell:nushell scripts /app/scripts
+COPY --chown=nushell:nushell krm /app/osm/krm
+COPY --chown=nushell:nushell operations /app/osm/operations
+
+# Add the entrypoint and default command
+ENTRYPOINT ["/bin/sh", "/app/scripts/entrypoint.sh"]
+
+CMD ["nu"]
