'Dockerize flutter web application

I'm trying to Dockerize my flutter web application. I have tried with many images, like use debian and download and install flutter on it, use unnoficial images like haizen/flutter or cirrusci/flutter. But in all attempts it's returning an exception that is not appearing when i'm running manually the build.

Here's my Dockerfile:

# Install flutter
FROM haizen/flutter:2.10.2-1-alpine AS build-env

# Run flutter doctor and enable web
RUN flutter doctor
RUN flutter config --enable-web

# Copy files to container and build
USER root
RUN mkdir /app/
COPY . /app/
WORKDIR /app/
RUN flutter build web

# Stage 2 - Create the run-time image
FROM nginx:1.21.1-alpine
COPY --from=build-env /app/build/web /usr/share/nginx/html

And this is the problem, running on GitHub Actions. I've tried running it on my machine too, with the same problem:

#15 24.20 Running "flutter pub get" in app...                                23.2s
#15 24.56 
#15 24.56 💪 Building with sound null safety 💪
#15 24.56 
#15 24.64 Compiling lib/main.dart for the Web...                          
#15 43.49 Target dart2js failed: Exception: lib/classes/rotation.dart:1:8:
#15 43.49 Error: Error when reading '/home/user/development/flutter/packages/flutter/lib/services.Dart': Error reading '/home/user/development/flutter/packages/flutter/lib/services.Dart'  (No such file or directory)
#15 43.49 import 'package:flutter/services.Dart';
#15 43.49        ^
#15 43.49 lib/classes/rotation.dart:6:9:
#15 43.49 Error: Undefined name 'DeviceOrientation'.
#15 43.49         DeviceOrientation.portraitUp,
#15 43.49         ^^^^^^^^^^^^^^^^^
#15 43.49 lib/classes/rotation.dart:7:9:
#15 43.49 Error: Undefined name 'DeviceOrientation'.
#15 43.49         DeviceOrientation.portraitDown,
#15 43.49         ^^^^^^^^^^^^^^^^^
#15 43.49 lib/classes/rotation.dart:5:7:
#15 43.49 Error: Undefined name 'SystemChrome'.
#15 43.49       SystemChrome.setPreferredOrientations([
#15 43.49       ^^^^^^^^^^^^
#15 43.49 lib/classes/rotation.dart:13:9:
#15 43.49 Error: Undefined name 'DeviceOrientation'.
#15 43.49         DeviceOrientation.landscapeLeft,
#15 43.49         ^^^^^^^^^^^^^^^^^
#15 43.49 lib/classes/rotation.dart:14:9:
#15 43.49 Error: Undefined name 'DeviceOrientation'.
#15 43.49         DeviceOrientation.landscapeRight,
#15 43.49         ^^^^^^^^^^^^^^^^^
#15 43.49 lib/classes/rotation.dart:12:7:
#15 43.49 Error: Undefined name 'SystemChrome'.
#15 43.49       SystemChrome.setPreferredOrientations([
#15 43.49       ^^^^^^^^^^^^
#15 43.49 lib/classes/rotation.dart:20:9:
#15 43.49 Error: Undefined name 'DeviceOrientation'.
#15 43.49         DeviceOrientation.portraitUp,
#15 43.49         ^^^^^^^^^^^^^^^^^
#15 43.49 lib/classes/rotation.dart:21:9:
#15 43.49 Error: Undefined name 'DeviceOrientation'.
#15 43.49         DeviceOrientation.portraitDown,
#15 43.49         ^^^^^^^^^^^^^^^^^
#15 43.49 lib/classes/rotation.dart:22:9:
#15 43.49 Error: Undefined name 'DeviceOrientation'.
#15 43.49         DeviceOrientation.landscapeLeft,
#15 43.49         ^^^^^^^^^^^^^^^^^
#15 43.49 lib/classes/rotation.dart:23:9:
#15 43.49 Error: Undefined name 'DeviceOrientation'.
#15 43.49         DeviceOrientation.landscapeRight,
#15 43.49         ^^^^^^^^^^^^^^^^^
#15 43.49 lib/classes/rotation.dart:19:7:
#15 43.49 Error: Undefined name 'SystemChrome'.
#15 43.49       SystemChrome.setPreferredOrientations([
#15 43.49       ^^^^^^^^^^^^
#15 43.49 Error: Compilation failed.
#15 43.49 
#15 43.49 Compiling lib/main.dart for the Web...                             18.8s
#15 43.50 Exception: Failed to compile application for the Web.
#15 ERROR: executor failed running [/bin/sh -c flutter build web]: exit code: 1
------
 > [build-env 7/7] RUN flutter build web:
#15 43.49         DeviceOrientation.landscapeRight,
#15 43.49         ^^^^^^^^^^^^^^^^^
#15 43.49 lib/classes/rotation.dart:19:7:
#15 43.49 Error: Undefined name 'SystemChrome'.
#15 43.49       SystemChrome.setPreferredOrientations([
#15 43.49       ^^^^^^^^^^^^
#15 43.49 Error: Compilation failed.
#15 43.49 
#15 43.49 Compiling lib/main.dart for the Web...                             18.8s
#15 43.50 Exception: Failed to compile application for the Web.
------
error: failed to solve: executor failed running [/bin/sh -c flutter build web]: exit code: 1
Error: buildx failed with: error: failed to solve: executor failed running [/bin/sh -c flutter build web]: exit code: 1

I don't know what to do, all commands are running with no errors in my computer. But when i try to build in Docker this error occurs. Can someone help me?



Solution 1:[1]

I've solved this problem. In the first line of rotation.dart the import 'package:flutter/services.Dart'; the extension is with first letter uppercase. building in Windows work, but in Docker don't.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 João Pedro