diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000000000000000000000000000000000000..d124a11f5743b846411d419cf6c259745e9b862f
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,21 @@
+stages:
+  - build
+
+image: docker:20.10.8
+
+variables:
+  DOCKER_TLS_CERTDIR: "/certs"
+  IMAGE_TAG_APP: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG
+
+services:
+  - docker:20.10.8-dind
+
+before_script:
+  - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
+
+build_app:
+  stage: build
+  script:
+    - docker pull $CI_REGISTRY_IMAGE:master || true
+    - docker build --cache-from $CI_REGISTRY_IMAGE:master -t $IMAGE_TAG_APP .
+    - docker push $IMAGE_TAG_APP
diff --git a/Dockerfile b/Dockerfile
index 64b3359747096dd27f21421aa39a525e22d85433..10a63545349e578fad3f9a2be234569c450e6760 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,4 +1,4 @@
-FROM python:3.7-alpine
+FROM python:3.8-slim
 
 RUN mkdir /code
 WORKDIR /code
diff --git a/requirements.in b/requirements.in
index 121ec5bd8aaa3ae3da68b1880c96f6126f665ecc..f6fda6a7b9d2b3f584e3a9fbd739695e3dfda3ac 100644
--- a/requirements.in
+++ b/requirements.in
@@ -1,4 +1,4 @@
-Django
+Django<3
 requests
 arrow
 pyjwt
diff --git a/requirements.txt b/requirements.txt
index c3e71c5000aaf78b9cf9cd9f532d77f0cb5c855f..91a2c30d321f3e53bec3604fadb700a62857bba1 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,19 +1,40 @@
 #
-# This file is autogenerated by pip-compile
+# This file is autogenerated by pip-compile with python 3.8
 # To update, run:
 #
-#    pip-compile --output-file requirements.txt requirements.in
+#    pip-compile requirements.in
 #
-arrow==0.12.1
-bleach==3.0.2
-certifi==2018.10.15       # via requests
-chardet==3.0.4            # via requests
-django==2.1.2
-idna==2.7                 # via requests
-pyjwt==1.6.4
-python-dateutil==2.7.3    # via arrow
-pytz==2018.5              # via django
-requests==2.20.0
-six==1.11.0               # via bleach, python-dateutil
-urllib3==1.24             # via requests
-webencodings==0.5.1       # via bleach
+arrow==1.2.0
+    # via -r requirements.in
+bleach==4.1.0
+    # via -r requirements.in
+certifi==2021.5.30
+    # via requests
+charset-normalizer==2.0.6
+    # via requests
+django==2.2.24
+    # via -r requirements.in
+idna==3.2
+    # via requests
+packaging==21.0
+    # via bleach
+pyjwt==2.1.0
+    # via -r requirements.in
+pyparsing==2.4.7
+    # via packaging
+python-dateutil==2.8.2
+    # via arrow
+pytz==2021.1
+    # via django
+requests==2.26.0
+    # via -r requirements.in
+six==1.16.0
+    # via
+    #   bleach
+    #   python-dateutil
+sqlparse==0.4.2
+    # via django
+urllib3==1.26.7
+    # via requests
+webencodings==0.5.1
+    # via bleach
diff --git a/test-requirements.txt b/test-requirements.txt
index 3405c8014e22be7df8bd260f5cd12938a51005c0..3ee4be6cf3274c23b4baf62698b38d986331391e 100644
--- a/test-requirements.txt
+++ b/test-requirements.txt
@@ -1,15 +1,29 @@
 #
-# This file is autogenerated by pip-compile
+# This file is autogenerated by pip-compile with python 3.8
 # To update, run:
 #
-#    pip-compile --output-file test-requirements.txt test-requirements.in
+#    pip-compile test-requirements.in
 #
-atomicwrites==1.2.1       # via pytest
-attrs==18.2.0             # via pytest
-more-itertools==4.3.0     # via pytest
-pluggy==0.8.0             # via pytest
-py==1.7.0                 # via pytest
-pytest-django==3.4.3
+attrs==21.2.0
+    # via pytest
+iniconfig==1.1.1
+    # via pytest
+packaging==21.0
+    # via pytest
+pluggy==1.0.0
+    # via pytest
+py==1.10.0
+    # via pytest
+pyparsing==2.4.7
+    # via packaging
+pytest==6.2.5
+    # via
+    #   -r test-requirements.in
+    #   pytest-django
+    #   pytest-env
+pytest-django==4.4.0
+    # via -r test-requirements.in
 pytest-env==0.6.2
-pytest==3.9.1
-six==1.11.0               # via more-itertools, pytest
+    # via -r test-requirements.in
+toml==0.10.2
+    # via pytest