diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000000000000000000000000000000000000..37384dc2cb404401dabf367624472eaf1801e223
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,14 @@
+stages:
+  - test
+  - dockerize
+
+deploy:
+  stage: dockerize
+  tags:
+    - shell
+  only:
+    - master
+  script:
+    - docker login -u "${CI_REGISTRY_USER}" -p "${CI_REGISTRY_PASSWORD}" "${CI_REGISTRY}"
+    - docker build -t "${CI_REGISTRY_IMAGE}" .
+    - docker push "${CI_REGISTRY_IMAGE}"
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..6630ebf1711326b0f6269e07c586aed033caf6c5
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,28 @@
+FROM git.ia2.inaf.it:5050/ia2/ia2-devops/maven_npm
+
+ADD vospace-ui-frontend/package.json /vospace-ui-frontend/
+WORKDIR /vospace-ui-frontend
+RUN npm install
+
+ADD vospace-ui-backend/pom.xml /vospace-ui-backend/
+WORKDIR /vospace-ui-backend
+RUN mvn initialize
+
+ADD vospace-ui-frontend/src /vospace-ui-frontend/src/
+ADD vospace-ui-frontend/public /vospace-ui-frontend/public/
+ADD vospace-ui-frontend/*.js /vospace-ui-frontend/
+ADD vospace-ui-frontend/*.json /vospace-ui-frontend/
+ADD vospace-ui-frontend/.env.production /vospace-ui-frontend/
+WORKDIR /vospace-ui-frontend
+RUN npm run build
+
+ADD vospace-ui-backend/src /vospace-ui-backend/src/
+ADD vospace-ui-backend/pom.xml /vospace-ui-backend/
+
+WORKDIR /vospace-ui-backend
+
+RUN mvn clean package -DskipTests -Pinclude-gui
+
+FROM openjdk:14-jdk-alpine
+COPY --from=0 /vospace-ui-backend/target/vospace-ui.jar /vospace-ui.jar
+ENTRYPOINT ["java","-jar","/vospace-ui.jar"]