diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index c37e4e00ba2e9f46f2b5da88441f0b61e07c25f3..315f17234224192295f07355b3f4bd8055f23f7f 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -6,6 +6,8 @@ stages:
 build_docker:
     stage: build
     retry: 2
+    tags:
+        - linux
     only:
         refs:
             - master
@@ -14,3 +16,17 @@ build_docker:
         - docker build -f docker/Dockerfile -t $CI_REGISTRY/$CI_PROJECT_PATH:latest .
         - docker container prune
         - docker push $CI_REGISTRY/$CI_PROJECT_PATH:latest
+
+build_docker_full:
+    stage: build
+    retry: 2
+    tags:
+        - linux
+    only:
+        refs:
+            - master
+    script:
+        - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
+        - docker build -f docker/Dockerfile_full -t $CI_REGISTRY/$CI_PROJECT_PATH:full .
+        - docker container prune
+        - docker push $CI_REGISTRY/$CI_PROJECT_PATH:full
diff --git a/docker/Dockerfile b/docker/Dockerfile
index 89f3102604d7a0fde4f1af5d5eed6f6449ada03d..d3efcaf193513c90378918e9a9c72f2b6c8cd4a2 100644
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -19,4 +19,4 @@ SHELL ["/bin/bash", "-c"]
 
 # The code to run when container is started:
 # Using informations from https://hub.docker.com/r/continuumio/miniconda3 and options used by Vicente in former Docker file based on Ubuntu.
-ENTRYPOINT [ "conda", "run", "--no-capture-output", "-n", "training_cpp_2021", "jupyter", "lab", "--port=8888", "--ip=0.0.0.0", "--no-browser","--allow-root","--NotebookApp.token=''"]
\ No newline at end of file
+ENTRYPOINT [ "conda", "run", "--no-capture-output", "-n", "training_cpp_2021", "jupyter", "lab", "--port=8888", "--ip=0.0.0.0", "--no-browser","--allow-root","--NotebookApp.token=''"]
diff --git a/docker/Dockerfile_full b/docker/Dockerfile_full
new file mode 100644
index 0000000000000000000000000000000000000000..931ed284e2bca466882f605f399f67b5aa8c1097
--- /dev/null
+++ b/docker/Dockerfile_full
@@ -0,0 +1,55 @@
+# Each instruction in this file generates a new layer that gets pushed to your local image cache
+
+# Lines preceeded by # are regarded as comments and ignored
+
+# The line below states we will base our new image on the Latest Official Ubuntu
+FROM ubuntu:latest
+
+# Identify the maintainer of an image
+LABEL maintainer="vicente.mataix-ferrandiz@inria.fr"
+
+ENV DEBIAN_FRONTEND=noninteractive
+RUN apt-get -y clean
+RUN apt-get -y update
+RUN apt-get -y upgrade
+RUN apt-get install -y \
+    nano               \
+    bash               \
+    wget               \
+    curl               \
+    git                \
+    cmake              \
+    build-essential && \
+    apt-get autoremove -y
+RUN apt-get -y clean
+
+# Creation of a "non-root" user
+ENV USER "formation"
+RUN useradd --create-home ${USER}
+USER ${USER}
+
+# Default working directory is
+WORKDIR /home/${USER}
+RUN curl -O https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
+RUN bash Miniconda3-latest-Linux-x86_64.sh -b
+RUN rm -rf Miniconda3-latest-Linux-x86_64.sh
+
+# Changing to home
+WORKDIR /home/${USER}
+RUN git clone https://gitlab.inria.fr/formations/cpp/gettingstartedwithmoderncpp.git
+
+# Change the default shell to be bash
+SHELL ["/bin/bash", "-c"]
+
+# Conda environment
+WORKDIR /home/${USER}/gettingstartedwithmoderncpp
+RUN /home/${USER}/miniconda3/bin/conda env create -f environment.yml
+RUN /home/${USER}/miniconda3/bin/conda init bash
+RUN source /home/${USER}/miniconda3/etc/profile.d/conda.sh
+RUN /home/${USER}/miniconda3/bin/conda clean -a
+
+# Add to the bashrc
+RUN echo "alias python=\"python3\"" >> ~/.bashrc
+RUN echo "conda activate training_cpp_2021" >> ~/.bashrc
+RUN source ~/.bashrc
+CMD ["/home/formation/miniconda3/bin/conda", "run", "--no-capture-output", "-n", "training_cpp_2021", "jupyter", "lab", "--port=8888", "--no-browser", "--ip=0.0.0.0", "--allow-root","--NotebookApp.token=''"]