diff --git a/README.md b/README.md
index 7e7f2cdd3dae7195ae68675655c4c8ab7f015272..36ae396f44812edbfe8b73237858ab961f235833 100644
--- a/README.md
+++ b/README.md
@@ -9,5 +9,3 @@ Build the `registry.gitlab.clubelek.fr/formations/ros/docker-images/ros:user` im
 # Usage
 
 Linux : `./run.sh registry.gitlab.clubelek.fr/formations/ros/docker-images/ros:user`
-
-Windows : launch the vnc image `registry.gitlab.clubelek.fr/formations/ros/docker-images/ros:user-vnc`
diff --git a/makefile b/makefile
index f8ad281b390cccfb683cf0defb5c3089fb76da88..59345f951e2ff95bccb3bd19e95f94b0dc901a49 100644
--- a/makefile
+++ b/makefile
@@ -1,9 +1,9 @@
 # TODO: universal image name from folder_name+dockerfile_name
 registry_url=registry.gitlab.clubelek.fr/formations/ros/docker-images/
 
-all: ros-base ros-desktop ros-graphic-acceleration ros-ide
+all: ros-base ros-desktop ros-melodic-desktop ros-graphic-acceleration ros-ide
 
-.PHONY: ros-base ros-desktop ros-graphic-acceleration ros-user
+.PHONY: ros-base ros-desktop ros-melodic-desktop ros-graphic-acceleration ros-user push
 
 ros-base:
 	docker build -t ${registry_url}ros:base -f ./ros-base/Dockerfile ./ros-base
@@ -11,9 +11,19 @@ ros-base:
 ros-desktop: ros-base
 	docker build -t ${registry_url}ros:desktop -f ./ros-desktop/Dockerfile ./ros-desktop
 
-ros-graphic-acceleration: ros-desktop
+ros-melodic-desktop: ros-desktop
+	docker build -t ${registry_url}ros:melodic-desktop -f ./ros-melodic-desktop/Dockerfile ./ros-melodic-desktop
+
+ros-graphic-acceleration: ros-melodic-desktop
 	docker build -t ${registry_url}ros:graphic-acceleration -f ./ros-graphic-acceleration/Dockerfile ./ros-graphic-acceleration
 
 ros-ide: ros-graphic-acceleration
 	docker build -t ${registry_url}ros:ide -f ./ros-ide/Dockerfile ./ros-ide
 
+push:
+	docker push ${registry_url}ros:base
+	docker push ${registry_url}ros:desktop
+	docker push ${registry_url}ros:melodic-desktop
+	docker push ${registry_url}ros:graphic-acceleration
+	docker push ${registry_url}ros:ide
+
diff --git a/ros-graphic-acceleration/Dockerfile b/ros-graphic-acceleration/Dockerfile
index 20d81b901fea28e49a51e01f767ad62a1167f42e..f0d4a2840398e2e07243560488c9a5421ed6227a 100644
--- a/ros-graphic-acceleration/Dockerfile
+++ b/ros-graphic-acceleration/Dockerfile
@@ -1,4 +1,4 @@
-FROM registry.gitlab.clubelek.fr/formations/ros/docker-images/ros:desktop
+FROM registry.gitlab.clubelek.fr/formations/ros/docker-images/ros:melodic-desktop
 
 # nvidia-container-runtime
 ENV NVIDIA_VISIBLE_DEVICES \
diff --git a/ros-melodic-desktop/Dockerfile b/ros-melodic-desktop/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..bd8aebb0b0f2cd2319c898b5b53ae1c168d72b5b
--- /dev/null
+++ b/ros-melodic-desktop/Dockerfile
@@ -0,0 +1,23 @@
+FROM registry.gitlab.clubelek.fr/formations/ros/docker-images/ros:desktop
+
+ENV ROS_VERSION_NAME melodic
+
+RUN apt-get update && apt-get install -q -y \
+    curl \
+    gnupg2 \
+    lsb-release \
+    && sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' \
+    && apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 \
+    && curl -sSL 'http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xC1CF6E31E6BADE8868B172B4F42ED6FBAB17C654' | apt-key add - \
+    && apt-get remove -y -q \
+        curl \
+        gnupg2 \
+        lsb-release \
+    && rm -rf /var/lib/apt/lists/*
+
+RUN apt-get update && apt-get install -q -y \
+    ros-melodic-desktop-full \
+    && rm -rf /var/lib/apt/lists/*
+
+# Add source command to root user bashrc
+RUN echo "source /opt/ros/$ROS_VERSION_NAME/setup.bash" >> ~/.bashrc