diff --git a/.env b/.env
new file mode 100644
index 0000000000000000000000000000000000000000..70c58da48064a845da49293a42d98ddf7568730b
--- /dev/null
+++ b/.env
@@ -0,0 +1,5 @@
+ENVIRONMENT=development # Environment to deploy to. Can be: development|production
+USER=1000   # User ID used in the Docker containers
+GROUP=1000  # Group ID used in the Docker containers
+
+IMAGE_TAG=latest
\ No newline at end of file
diff --git a/app/.ash_history b/app/.ash_history
deleted file mode 100644
index b5c9de2198510382a4c20e8240e6a44fe6e5610c..0000000000000000000000000000000000000000
--- a/app/.ash_history
+++ /dev/null
@@ -1,2 +0,0 @@
-ls
-php artisan version
diff --git a/app/bootstrap/cache/.gitignore b/app/bootstrap/cache/.gitignore
deleted file mode 100644
index d6b7ef32c8478a48c3994dcadc86837f4371184d..0000000000000000000000000000000000000000
--- a/app/bootstrap/cache/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-*
-!.gitignore
diff --git a/app/public/js/turf.min.js b/app/resources/assets/js/turf.min.js
similarity index 100%
rename from app/public/js/turf.min.js
rename to app/resources/assets/js/turf.min.js
diff --git a/build/fpm/Dockerfile b/build/fpm/Dockerfile
index 6fcafa18d30818e481af86458c8606cfb4c9dfad..14cbd90de0d9eb1291bc0991d68b16b94705322b 100644
--- a/build/fpm/Dockerfile
+++ b/build/fpm/Dockerfile
@@ -1,45 +1,87 @@
-FROM alpine:3.18.4 as base
+FROM alpine:3.13 as base
+
+ARG USER=1000
+ARG GROUP=1000
 
 RUN apk add --update \
     tzdata \
     ca-certificates \
     zip \
     redis \
-    php81 \
-    php81-fpm \
-    php81-xdebug \
+    php7 \
+    php7-common \
+    php7-phar \
+    php7-fpm \
+    php7-curl \
+    php7-mbstring \
+    php7-sqlite3 \
+    php7-pdo_mysql \
+    php7-pdo_sqlite \
+    php7-dom \
+    php7-xml \
+    php7-xmlwriter \
+    php7-tokenizer \
+    php7-zip \
+    php7-redis \
+    php7-gd \
+    php7-json \
+    php7-pcntl \
+    php7-fileinfo \
+    php7-xdebug \
     && rm -rf /var/cache/apk/*
 
 RUN cp /usr/share/zoneinfo/Europe/Berlin /etc/localtime
 
-RUN adduser mgmaps -h /html -D -s /bin/sh -k /dev/null
+RUN addgroup -g $GROUP mgmaps && adduser mgmaps -h /mgmaps -D -s /bin/sh -k /dev/null -u $USER -G mgmaps
 USER mgmaps
 
 WORKDIR /html
+RUN mkdir -p /html/vendor /html/bootstrap/cache /mgmaps/.composer
 EXPOSE 80
 
+FROM base as composer
+
+USER root
+
+WORKDIR /mgmaps
+
+ADD ./build/fpm/installComposer.sh /usr/bin/installComposer
+RUN chmod go+x /usr/bin/installComposer
+RUN installComposer && rm /usr/bin/installComposer
+
+USER mgmaps
+WORKDIR /html
+VOLUME ["/mgmaps/.composer", "/html/vendor", "/html/bootstrap/cache"]
+CMD ["composer", "install"]
+
 FROM base as development
 
 USER root
 
 # Add common configurations development & production
-ADD ./build/fpm/configuration/common/*.ini /etc/php81/conf.d/
-ADD ./build/fpm/configuration/common/*.conf /etc/php81/php-fpm.d/
+ADD ./build/fpm/configuration/common/*.ini /etc/php7/conf.d/
+ADD ./build/fpm/configuration/common/*.conf /etc/php7/php-fpm.d/
 
 # Add development only configuration
-ADD ./build/fpm/configuration/development/*.ini /etc/php81/conf.d/
-ADD ./build/fpm/configuration/development/*.conf /etc/php81/php-fpm.d/
+ADD ./build/fpm/configuration/development/*.ini /etc/php7/conf.d/
+ADD ./build/fpm/configuration/development/*.conf /etc/php7/php-fpm.d/
+
+ADD ./build/fpm/entrypoint.sh /entrypoint.sh
+RUN chmod ug+x /entrypoint.sh
+
+ENTRYPOINT [ "/entrypoint.sh" ]
 
-CMD php-fpm81 --nodaemonize
+CMD ["php-fpm7", "--nodaemonize"]
 
 USER mgmaps
+VOLUME ["/html/vendor", "/html/bootstrap/cache"]
 
 FROM development as production
 
 USER root
 
-RUN apk del php81-xdebug
-RUN rm /etc/php81/conf.d/xdebug.ini
+RUN apk del php7-xdebug
+RUN rm /etc/php7/conf.d/xdebug.ini
 
 USER mgmaps
 
diff --git a/build/fpm/entrypoint.sh b/build/fpm/entrypoint.sh
new file mode 100644
index 0000000000000000000000000000000000000000..18e05c52f43bdf6482a8bd35818e842a04bda2fd
--- /dev/null
+++ b/build/fpm/entrypoint.sh
@@ -0,0 +1,23 @@
+#! /bin/sh
+
+_term() {
+    echo "Stopping Process!"
+    kill -TERM "$fpm" 2>/dev/null
+}
+
+trap _term SIGTERM
+
+cd ~
+
+if [ ! -f .env ]
+then
+  pwd
+  ls -alh
+  cp .env.example .env
+  php artisan key:generate
+fi
+
+$@ &
+
+fpm=$!
+wait "$fpm"
\ No newline at end of file
diff --git a/build/fpm/installComposer.sh b/build/fpm/installComposer.sh
new file mode 100644
index 0000000000000000000000000000000000000000..6c531f88ab8d2489067fb4b44651402787b51695
--- /dev/null
+++ b/build/fpm/installComposer.sh
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+EXPECTED_CHECKSUM="$(php -r 'copy("https://composer.github.io/installer.sig", "php://stdout");')"
+php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
+ACTUAL_CHECKSUM="$(php -r "echo hash_file('sha384', 'composer-setup.php');")"
+
+if [ "$EXPECTED_CHECKSUM" != "$ACTUAL_CHECKSUM" ]
+then
+    >&2 echo 'ERROR: Invalid installer checksum'
+    rm composer-setup.php
+    exit 1
+fi
+
+php composer-setup.php --install-dir=/usr/local/bin --filename=composer --version=2.6.5
+RESULT=$?
+rm composer-setup.php
+exit $RESULT
\ No newline at end of file
diff --git a/docker-compose.yml b/docker-compose.yml
index e2bf7ec15814b971b6c640c95afc664ba8887d0e..f8c2eb8993be3573fcd783dfc93df18c6f22dd6b 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -2,10 +2,15 @@ version: "3"
 services:
   nginx:
     restart: unless-stopped
+    depends_on:
+      - fpm
     build:
       dockerfile: ./build/nginx/Dockerfile
-      target: development
-    image: metagermaps:nginx-latest
+      target: ${ENVIRONMENT}
+      args:
+        USER: ${USER}
+        GROUP: ${GROUP}
+    image: metagermaps:nginx-${IMAGE_TAG}
     ports:
       - 8080:80
     working_dir: /html
@@ -15,8 +20,24 @@ services:
     restart: unless-stopped
     build:
       dockerfile: ./build/fpm/Dockerfile
-      target: development
-    image: metagermaps:fpmlatest
-    working_dir: /html
+      target: ${ENVIRONMENT}
+    image: metagermaps:fpm-${IMAGE_TAG}
+    volumes:
+      - ./app:/html
+      - vendor:/html/vendor
+      - bootstrap-cache:/html/bootstrap/cache
+  composer:
+    restart: on-failure
+    build:
+      dockerfile: ./build/fpm/Dockerfile
+      target: composer
+    image: metagermaps:composer-${IMAGE_TAG}
     volumes:
       - ./app:/html
+      - composer-cache:/mgmaps/.composer
+      - vendor:/html/vendor
+      - bootstrap-cache:/html/bootstrap/cache
+volumes:
+  composer-cache: {}
+  vendor: {}
+  bootstrap-cache: {}