diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000000000000000000000000000000000000..fe26d0c9c794c1ee6ee7072e7ebd921e1a32c69f
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,39 @@
+variables:
+  DOCKER_HOST: tcp://dockerhost:2375/
+  DOCKER_DRIVER: overlay2
+  DOCKER_TLS_CERTDIR: ''
+
+stages:
+- lint
+- test
+- build
+
+lint:
+  stage: lint
+  image: php:8.1-cli
+  before_script:
+  - apt-get update -y && apt-get install -y git zip unzip libzip-dev
+  - docker-php-ext-install zip
+  - curl -sS https://getcomposer.org/installer | php
+  - php composer.phar install
+  script:
+  - php bin/console lint:yaml config
+  - php bin/console lint:container
+  - php vendor/bin/phplint --exclude=vendor --exclude=var --no-cache -v
+
+include:
+- template: Security/SAST.gitlab-ci.yml
+
+build_image:
+  image: docker
+  services:
+  - name: docker:dind
+    alias: dockerhost
+  stage: build
+  before_script:
+  - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
+  script:
+  - docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_BRANCH -f docker/Dockerfile.prod .
+  - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_BRANCH
+  only:
+  - main
diff --git a/docker/Dockerfile.prod b/docker/Dockerfile.prod
new file mode 100644
index 0000000000000000000000000000000000000000..4368c8fcde30cf36d3d27fbaff6278fc1ba7b3dc
--- /dev/null
+++ b/docker/Dockerfile.prod
@@ -0,0 +1,28 @@
+FROM php:8.1-fpm-alpine
+
+COPY docker/wait-for-it.sh /usr/local/bin/wait-for-it
+RUN chmod +x /usr/local/bin/wait-for-it && apk add --no-cache bash
+
+ENV APP_ENV=prod
+
+WORKDIR /var/www/html
+
+ADD https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/
+RUN chmod +x /usr/local/bin/install-php-extensions && sync && install-php-extensions \
+    apcu \
+    intl \
+    opcache \
+    openssl \
+    pdo_pgsql \
+    zip
+
+RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"
+COPY --from=composer /usr/bin/composer /usr/bin/composer
+
+RUN apk add --no-cache nginx
+COPY docker/nginx.conf docker/calendar.conf /etc/nginx/
+
+COPY --chown=root:root . .
+RUN composer install --prefer-dist --no-dev --optimize-autoloader
+
+CMD php bin/console cache:clear && wait-for-it database:5432 -- bin/console doctrine:migrations:migrate -n && nginx && php-fpm