diff --git a/Dockerfile b/Dockerfile
index bfd4ff9..d55aac3 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,10 +1,9 @@
-FROM php:8.0-fpm-alpine3.14
-RUN apk add --no-cache composer nginx php-mysqli
+FROM php:8-fpm-alpine
+RUN apk add --no-cache composer php-mysqli
 RUN docker-php-ext-install mysqli
 RUN docker-php-ext-enable mysqli
 RUN rm -rf /var/www/*
 COPY --chown=www-data:www-data ./ /var/www
-COPY ./resources/nginx.conf /etc/nginx/nginx.conf
 COPY ./resources/php.ini $PHP_INI_DIR/php.ini
 RUN composer install --no-ansi --no-dev --no-interaction --no-plugins --no-progress --no-scripts --optimize-autoloader -d /var/www
-CMD php-fpm -D; nginx; tail -F /dev/null;
+USER 1025
\ No newline at end of file
diff --git a/docker-compose.yml b/docker-compose.yml
index 48f6e99..86b10f8 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,39 +1,46 @@
-version: "3"
+version: "3.3"
 services:
-  web:
+
+  php:
     build: .
-    container_name: web
     environment:
       MYSQL_HOST: db
+      MYSQL_PORT: 3306
       MYSQL_USER: guest-portal
       MYSQL_PASSWORD: guest-portal
       MYSQL_DATABASE: guest-portal
-      MYSQL_PORT: 3306
       UNIFI_USER: guest-portal
       UNIFI_PASSWORD: password
       UNIFI_URL: https://192.168.0.1
       UNIFI_SITE: default
       UNIFI_VERSION: 6.0.43
       UNIFI_VERIFY_CERT: 0
-    ports:
-      - "8080:80"
     volumes:
-      - ./:/app
+      - "./:/var/www:ro"
+
+  nginx:
+    image: nginx
+    restart: unless-stopped
+    user: nginx
+    volumes:
+      - "./resources/nginx.conf:/etc/nginx/nginx.conf:ro"
+      - "./:/var/www:ro"
+    read_only: true
+    tmpfs:
+      - /tmp
+    ports:
+      - "8080:8080"
+
   db:
     image: linuxserver/mariadb:alpine
-    container_name: db
     volumes:
       - mysql:/var/lib/mysql
       - ./resources/db-template.sql:/docker-entrypoint-initdb.d/db.sql
     environment:
-      MYSQL_ROOT_PASSWORD: password
+      MYSQL_RANDOM_ROOT_PASSWORD: 1
       MYSQL_USER: guest-portal
       MYSQL_PASSWORD: guest-portal
       MYSQL_DATABASE: guest-portal
-  phpmyadmin:
-    container_name: phpmyadmin
-    image: phpmyadmin
-    ports:
-      - "81:80"
+
 volumes:
-  mysql:
\ No newline at end of file
+  mysql:
diff --git a/resources/nginx.conf b/resources/nginx.conf
index f54164d..d429bbb 100644
--- a/resources/nginx.conf
+++ b/resources/nginx.conf
@@ -1,6 +1,6 @@
-user www-data;
 worker_processes auto;
-pid	/tmp/nginx.pid;
+pid	/dev/null;
+error_log /dev/stderr crit;
 
 events {
 	worker_connections  1024;
@@ -19,9 +19,20 @@ http {
 	tcp_nopush on;
 	tcp_nodelay on;
 
+	##
+	# Temp paths
+	##
+
+	client_body_temp_path /tmp 1 2;
+  proxy_temp_path /tmp 1 2;
+  fastcgi_temp_path /tmp 1 2;
+  uwsgi_temp_path /tmp 1 2;
+  scgi_temp_path /tmp 1 2;
+
 	##
 	# Client Settings
 	##
+
 	client_body_buffer_size 1K;
 	client_header_buffer_size 1k;
   client_max_body_size 1K;
@@ -30,17 +41,26 @@ http {
   client_header_timeout 10;
   keepalive_timeout     5 5;
   send_timeout          10;
+  proxy_buffering off;
+
+  ##
+  # Compression
+  ##
+
+  gzip on;
+  gzip_vary on;
+  gzip_static on;
 
 	##
 	# Log Settings
 	##
 
-	access_log  /dev/stdout;
-	error_log /dev/stdout crit;
+	access_log /dev/stdout;
+	error_log /dev/stderr crit;
 
   server {
   	server_name _;
-  	listen 80;
+  	listen 8080;
   	index index.php;
   	root /var/www/public;
 
@@ -50,7 +70,7 @@ http {
   	}
 
   	location ~ \.php$ {
-  	  fastcgi_pass 127.0.0.1:9000;
+  	  fastcgi_pass php:9000;
       fastcgi_index index.php;
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       fastcgi_split_path_info ^(.+\.php)(/.+)$;