diff --git a/Dockerfile b/Dockerfile
index 6f421b1baccd00afb4ba042f3d13ce57ba6d744d..6f10e2719d16a1acde5b4b3e1a41918a0e70fde0 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,22 +1,22 @@
-FROM node:19-slim AS base
-ENV BUN_HOME="/bun"
-ENV PATH="$BUN_HOME:$PATH"
-RUN corepack enable
+FROM oven/bun:alpine AS base
 WORKDIR /app
 ARG IMAGE_TAG="dev-no-image-tag"
 ENV GRAPHPOLARIS_VERSION=$IMAGE_TAG
 
 
 FROM base AS install
+WORKDIR /app
 COPY package.json ./
 COPY bun.lockb ./
-COPY pnpm-workspace.yaml ./
 COPY turbo.json ./
 COPY apps/web/package.json ./apps/web/package.json
 COPY apps/docs/package.json ./apps/docs/package.json
 COPY libs/config/package.json ./libs/config/package.json
 COPY libs/shared/package.json ./libs/shared/package.json
-RUN bun install --frozen-lockfile
+COPY libs/workspace ./libs/workspace
+# For some reason we need to first install to then be able to install for prod with frozen lockfile
+RUN bun install
+RUN bun install --frozen-lockfile --production
 
 
 FROM base AS build
@@ -26,18 +26,18 @@ COPY libs /app/libs
 COPY --from=install /app /app
 # Fixes: FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
 ENV NODE_OPTIONS="--max-old-space-size=8192"
+ENV BUN_JSC_forceRAMSize="8192"
 RUN bun run build
 
 
 FROM base AS env-build
 # Automatically set by build process: https://docs.docker.com/reference/dockerfile/#automatic-platform-args-in-the-global-scope
 ARG TARGETARCH
-RUN npm install -g pkg
 WORKDIR /app
 COPY --from=install /app/node_modules /app/node_modules
 RUN if [ "$TARGETARCH" = "arm64" ]; then ARCHITECTURE=arm64; else ARCHITECTURE=x64; fi \
     && echo "System architecture: $ARCHITECTURE" \
-    && npx pkg ./node_modules/@import-meta-env/cli/bin/import-meta-env.js --target node18-alpine-${ARCHITECTURE} --output import-meta-env-alpine
+    && bunx pkg ./node_modules/@import-meta-env/cli/bin/import-meta-env.js --target node18-alpine-${ARCHITECTURE} --output import-meta-env-alpine
 
 FROM nginx:1.25-alpine
 WORKDIR /app
diff --git a/libs/shared/lib/components/featureFlags/featureFlags.ts b/libs/shared/lib/components/featureFlags/featureFlags.ts
index 1f98e9b85938f7cbd35909c93c670e947556e6ef..b3a8363ccbf29363a0a017cf0c9f7e3bd6049942 100644
--- a/libs/shared/lib/components/featureFlags/featureFlags.ts
+++ b/libs/shared/lib/components/featureFlags/featureFlags.ts
@@ -38,8 +38,7 @@ export const FEATURE_FLAGS = {
 
 export type FeatureFlagName = keyof typeof FEATURE_FLAGS;
 
-const canViewFeature = (flagId: FeatureFlagName): boolean => {
+export const canViewFeature = (flagId: FeatureFlagName): boolean => {
   return FEATURE_FLAGS[flagId];
 };
 
-export { canViewFeature };
diff --git a/libs/shared/lib/vis/components/VisualizationPanel.tsx b/libs/shared/lib/vis/components/VisualizationPanel.tsx
index 8222ea40287973724506d794301475d40cb01d93..42092a6c1ba66344c55263169a27c67165aa1296 100644
--- a/libs/shared/lib/vis/components/VisualizationPanel.tsx
+++ b/libs/shared/lib/vis/components/VisualizationPanel.tsx
@@ -17,7 +17,7 @@ import { updateVisualization, addVisualization } from '../../data-access/store/v
 import { VisualizationPropTypes, VISComponentType } from '../common';
 import { ErrorBoundary } from '../../components/errorBoundary';
 import { addError } from '../../data-access/store/configSlice';
-import { canViewFeature } from '@graphpolaris/shared/lib/components/featureFlags/featureFlags';
+import { canViewFeature } from '../../components/featureFlags';
 
 type PromiseFunc = () => Promise<{ default: VISComponentType<any> }>;
 export const Visualizations: Record<string, PromiseFunc> = {