diff --git a/.eslintignore b/.eslintignore
index cd0aa034e..af1589dea 100644
--- a/.eslintignore
+++ b/.eslintignore
@@ -11,3 +11,4 @@ wiki/
dist/
docs/
test/functional/store/*
+docker-examples/**/lib/**/*.js
diff --git a/docker-examples/v5/README.md b/docker-examples/v5/README.md
index 6938440b7..3bdd54cd7 100644
--- a/docker-examples/v5/README.md
+++ b/docker-examples/v5/README.md
@@ -3,3 +3,12 @@
> Before run examples, build the local image by running `pnpm docker`.
- [Docker + Nginx + Verdaccio](reverse_proxy/nginx/README.md)
+
+## Using Plugins with Docker
+
+List of different approaches
+
+> Note these options could be improved, feel free to submit upgrades
+
+- [Docker + Install plugins from a registry](plugins/docker-build-install-plugin/README.md)
+- [Docker + Install local plugin](plugins/docker-local-plugin/README.md)
diff --git a/docker-examples/v5/plugins/docker-build-install-plugin/Dockerfile b/docker-examples/v5/plugins/docker-build-install-plugin/Dockerfile
new file mode 100644
index 000000000..38c2eb238
--- /dev/null
+++ b/docker-examples/v5/plugins/docker-build-install-plugin/Dockerfile
@@ -0,0 +1,25 @@
+# Docs based on https://github.com/xlts-dev/verdaccio-prometheus-middleware#installation
+
+# Docker multi-stage build - https://docs.docker.com/develop/develop-images/multistage-build/
+# Use an alpine node image to install the plugin
+FROM node:lts-alpine as builder
+
+# Install the metrics middleware plugin
+# npm docs
+# --global-style https://docs.npmjs.com/cli/v7/commands/npm-install#global-style
+# --no-bin-links https://docs.npmjs.com/cli/v7/commands/npm-install#bin-links
+# --omit=optional
+RUN mkdir -p /verdaccio/plugins \
+ && cd /verdaccio/plugins \
+ && npm install --global-style --no-bin-links --omit=optional verdaccio-auth-memory@latest
+
+# The final built image will be based on the standard Verdaccio docker image.
+FROM verdaccio/verdaccio:5
+
+# Copy the plugin files over from the 'builder' node image.
+# The `$VERDACCIO_USER_UID` env variable is defined in the base `verdaccio/verdaccio` image.
+# Refer to: https://github.com/verdaccio/verdaccio/blob/v5.2.0/Dockerfile#L32
+ADD docker.yaml /verdaccio/conf/config.yaml
+COPY --chown=$VERDACCIO_USER_UID:root --from=builder \
+ /verdaccio/plugins/node_modules/verdaccio-auth-memory \
+ /verdaccio/plugins/verdaccio-auth-memory
diff --git a/docker-examples/v5/plugins/docker-build-install-plugin/README.md b/docker-examples/v5/plugins/docker-build-install-plugin/README.md
new file mode 100644
index 000000000..2f440cff4
--- /dev/null
+++ b/docker-examples/v5/plugins/docker-build-install-plugin/README.md
@@ -0,0 +1,46 @@
+# Installing a plugin with Docker build
+
+On this small tutorial (based on [`verdaccio-prometheus-middleware`](https://github.com/xlts-dev/verdaccio-prometheus-middleware) example) you will be able to use a published package in any random registry (npmjs by default) and use it withing a docker image without mapping need it.
+
+> Since verdaccio:5 uses `yarn@2` to run the application, this tutorial is a workaround but future prove since verdaccio 6 uses `pnpm` to build the docker image.
+
+There are two main steps to highlight:
+
+- `docker.yaml`: This is a copy of the original configuration file for docker and with small modifications to use the plugin [`verdaccio-auth-memory`](https://www.npmjs.com/package/verdaccio-auth-memory) and custom web title for demonstration.
+- The `Dockerfile` take advance of the docker multi-stage build to install the plugin into the `verdaccio/plugins` folder withing the image, then we apply the right permissions `--chown=$VERDACCIO_USER_UID:root` so the plugin is recognized.
+
+## Run it
+
+Build this image.
+
+```bash
+docker build -t verdaccio/verdaccio:local .
+```
+
+and to run it
+
+```bash
+docker run -it --rm --name verdaccio -p 4873:4873 verdaccio/verdaccio:local
+```
+
+## Usage
+
+```dockerfile
+# Docker multi-stage build - https://docs.docker.com/develop/develop-images/multistage-build/
+# Use an alpine node image to install the plugin
+FROM node:lts-alpine as builder
+
+RUN mkdir -p /verdaccio/plugins \
+ && cd /verdaccio/plugins \
+ && npm install --global-style --no-bin-links --omit=optional verdaccio-auth-memory@latest
+
+FROM verdaccio/verdaccio:5
+
+# copy your modified config.yaml into the image
+ADD docker.yaml /verdaccio/conf/config.yaml
+
+COPY --chown=$VERDACCIO_USER_UID:root --from=builder \
+ /verdaccio/plugins/node_modules/verdaccio-auth-memory \
+ /verdaccio/plugins/verdaccio-auth-memory
+
+```
diff --git a/docker-examples/v5/plugins/docker-build-install-plugin/docker.yaml b/docker-examples/v5/plugins/docker-build-install-plugin/docker.yaml
new file mode 100644
index 000000000..3bc70a146
--- /dev/null
+++ b/docker-examples/v5/plugins/docker-build-install-plugin/docker.yaml
@@ -0,0 +1,197 @@
+#
+# This is the default configuration file. It allows all users to do anything,
+# please read carefully the documentation and best practices to
+# improve security.
+#
+# Do not configure host and port under `listen` in this file
+# as it will be ignored when using docker.
+# see https://verdaccio.org/docs/en/docker#docker-and-custom-port-configuration
+#
+# Look here for more config file examples:
+# https://github.com/verdaccio/verdaccio/tree/5.x/conf
+#
+# Read about the best practices
+# https://verdaccio.org/docs/best
+
+# path to a directory with all packages
+storage: /verdaccio/storage/data
+# path to a directory with plugins to include
+plugins: /verdaccio/plugins
+
+# https://verdaccio.org/docs/webui
+web:
+ title: Verdaccio Publish Config Test
+ # comment out to disable gravatar support
+ # gravatar: false
+ # by default packages are ordercer ascendant (asc|desc)
+ # sort_packages: asc
+ # convert your UI to the dark side
+ # darkMode: true
+ # html_cache: true
+ # by default all features are displayed
+ # login: true
+ # showInfo: true
+ # showSettings: true
+ # In combination with darkMode you can force specific theme
+ # showThemeSwitch: true
+ # showFooter: true
+ # showSearch: true
+ # showRaw: true
+ # showDownloadTarball: true
+ # HTML tags injected after manifest
+ # scriptsBodyAfter:
+ # - ''
+ # HTML tags injected before ends
+ # metaScripts:
+ # - ''
+ # - ''
+ # - ''
+ # HTML tags injected first child at