diff --git a/.dockerignore b/.dockerignore
index 1adf5fe..1d95d8c 100644
--- a/.dockerignore
+++ b/.dockerignore
@@ -9,9 +9,9 @@ tmp
 
 # Docker extra
 docker
-frontend
 .editorconfig
 .eslintrc.cjs
 .git
 .gitignore
-README.md
+.github
+*.md
diff --git a/compose.yaml b/compose.yaml
index b2b7bdb..28b5432 100644
--- a/compose.yaml
+++ b/compose.yaml
@@ -1,6 +1,9 @@
 services:
   dockge:
     image: louislam/dockge:1
+    build:
+      context: .
+      dockerfile: docker/Dockerfile
     restart: unless-stopped
     ports:
       # Host Port : Container Port
diff --git a/docker/Dockerfile b/docker/Dockerfile
index 351b676..099f0d4 100644
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -4,9 +4,19 @@
 FROM louislam/dockge:build-healthcheck AS build_healthcheck
 
 ############################################
-# Build
+# Build frontend
 ############################################
-FROM louislam/dockge:base AS build
+FROM louislam/dockge:base AS build_frontend
+WORKDIR /app
+COPY --chown=node:node . .
+RUN --mount=type=cache,id=pnpm,target=/pnpm/store \
+    pnpm install && \
+    pnpm run build:frontend
+
+############################################
+# Install node modules
+############################################
+FROM louislam/dockge:base AS build_nodemodules
 WORKDIR /app
 COPY --chown=node:node  ./package.json ./package.json
 COPY --chown=node:node  ./package-lock.json ./package-lock.json
@@ -18,8 +28,9 @@ RUN npm ci
 FROM louislam/dockge:base AS release
 WORKDIR /app
 COPY --chown=node:node --from=build_healthcheck /app/extra/healthcheck /app/extra/healthcheck
-COPY --from=build /app/node_modules /app/node_modules
-COPY --chown=node:node  . .
+COPY --from=build_frontend /app/frontend-dist /app/frontend-dist
+COPY --from=build_nodemodules /app/node_modules /app/node_modules
+COPY --chown=node:node . .
 RUN mkdir ./data