diff --git a/Dockerfile b/Dockerfile
index 99e96f7714898fc6c161b456dc6c731980311560..fc872e8e1cd896e4837166632438d1c5bdcff9e6 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,44 +1,21 @@
-FROM jro7/flutter_lcov:latest
+ARG FLUTTER_VERSION="3.27.3"
+ARG SONAR_SCANNER_CLI_IMAGE_VERSION="11.2.0.1836_7.0.1"
 
-# Avoid warnings by switching to noninteractive
-ENV DEBIAN_FRONTEND=noninteractive
+FROM ghcr.io/cirruslabs/flutter:${FLUTTER_VERSION}
 
-# Setup workspace folder
-RUN mkdir -p /workspace && chown -R $(whoami):$(whoami) /workspace
-WORKDIR /workspace
+# Set up environment variables for Sonar Scanner CLI
+ENV SONAR_SCANNER_HOME="/opt/sonar-scanner" \
+    SONAR_USER_HOME="/opt/sonar-scanner/.sonar" \
+    SONAR_WORKDIR_PATH="/tmp/.scannerwork" \
+    XDG_CONFIG_HOME="/tmp" \
+    PATH="$PATH:$SONAR_SCANNER_HOME/bin"
 
-# Install packages
-RUN apt-get update \
-    && apt-get -y install --no-install-recommends ca-certificates git nodejs unzip wget xz-utils \
-    # Clean up
-    && apt-get autoremove -y \
-    && apt-get clean -y \
-    && rm -rf /var/lib/apt/lists/*
+# Copy Sonar Scanner into Flutter image
+COPY --from=docker.io/sonarsource/sonar-scanner-cli:${SONAR_SCANNER_CLI_IMAGE_VERSION} /opt/sonar-scanner $SONAR_SCANNER_HOME
+COPY --from=docker.io/sonarsource/sonar-scanner-cli:${SONAR_SCANNER_CLI_IMAGE_VERSION} /usr/bin/entrypoint.sh /usr/bin/entrypoint.sh
 
-# Configure Sonar Scanner CLI
-ARG SONAR_SCANNER_CLI_VERSION=4.6.0.2311
-RUN wget -qO sonar-scanner-cli.zip https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-$SONAR_SCANNER_CLI_VERSION-linux.zip \
-    && unzip sonar-scanner-cli.zip -d /opt \
-    && chown -R $(whoami):$(whoami) /opt/sonar-scanner-$SONAR_SCANNER_CLI_VERSION-linux \
-    && rm sonar-scanner-cli.zip \
-    && chmod +x /opt/sonar-scanner-$SONAR_SCANNER_CLI_VERSION-linux/bin/sonar-scanner \
-    && ln -s /opt/sonar-scanner-$SONAR_SCANNER_CLI_VERSION-linux/bin/sonar-scanner /usr/local/bin/sonar-scanner
-
-# Configure shellcheck
-ARG SHELLCHECK_VERSION=latest
-RUN wget -qO /opt/shellcheck-${SHELLCHECK_VERSION}.tar.xz https://shellcheck.storage.googleapis.com/shellcheck-${SHELLCHECK_VERSION}.linux.x86_64.tar.xz \
-    && cd /opt \
-    && tar -xf shellcheck-${SHELLCHECK_VERSION}.tar.xz \
-    && chown -R $(whoami):$(whoami) /opt/shellcheck-${SHELLCHECK_VERSION} \
-    && rm shellcheck-${SHELLCHECK_VERSION}.tar.xz \
-    && chmod +x /opt/shellcheck-${SHELLCHECK_VERSION}/shellcheck \
-    && ln -s /opt/shellcheck-${SHELLCHECK_VERSION}/shellcheck /usr/local/bin/shellcheck
-
-# Switch back to dialog for any ad-hoc use of apt-get
-ENV DEBIAN_FRONTEND=''
-
-# Define default command to be run
-CMD ["sonar-scanner"]
+# Set entrypoint script
+ENTRYPOINT ["/usr/bin/entrypoint.sh"]
 
 # Container image metadata
 ## Note to editors: metadata values for `created`, `version`, and `revision`
@@ -46,7 +23,7 @@ CMD ["sonar-scanner"]
 ## It is also possible to pass other metadata values via build arguments.
 ARG IMAGE_CREATED=""
 ARG IMAGE_SOURCE="https://gitlab.cs.ui.ac.id/ichlasul.affan/sonar-scanner-cli-flutter-image"
-ARG IMAGE_VERSION=${SONAR_SCANNER_CLI_VERSION}
+ARG IMAGE_VERSION=${SONAR_SCANNER_CLI_IMAGE_VERSION}
 ARG IMAGE_REVISION=""
 ARG IMAGE_VENDOR="Faculty of Computer Science Universitas Indonesia"
 ARG IMAGE_TITLE="Sonar Scanner CLI Image for Flutter"