Reading time: < 1 minute
Hello, today we’re going to see how to use Docker Compose to run Flutter in the web browser of the host machine where Docker is running.
The first thing we’re going to do is create the docker-compose.yml file and add this content:
version: "3.1" services: flutter: build: context: ./Dockerfile dockerfile: flutter_arm restart: unless-stopped container_name: flutter environment: - DISPLAY=host.docker.internal:0 ports: - 8080:8080 volumes: - ./app_path:/home/mobiledevops/app - /tmp/.X11-unix:/tmp/.X11-unix networks: - docker-network networks: docker-network: driver: bridge external: true
The APP in Flutter or APP directory is located at ./app_path.
The flutter_arm file is inside ./Dockerfile, we create it and add this content (even though it says arm, it works on a non-arm machine):
FROM ubuntu:latest RUN apt-get update && \ apt-get install -y curl git wget unzip libgl1-mesa-dev libgtk-3-dev RUN git clone --depth=1 --branch=stable https://github.com/flutter/flutter.git /usr/local/flutter ENV PATH="/usr/local/flutter/bin:/usr/local/flutter/bin/cache/dart-sdk/bin:${PATH}" RUN flutter channel stable && flutter upgrade RUN flutter config --enable-web WORKDIR /home/mobiledevops/app # Keep the container running CMD ["tail", "-f", "/dev/null"]
In this Dockerfile, we have added the installation of dependencies libgl1-mesa-dev
and libgtk-3-dev
, which are necessary to run Flutter in web mode.
Now, to run the web, we’ll need to do the following:
- Bring up the docker:
docker compose up -d
2Install the dependencies:
docker exec -it flutter flutter pub get
3. Build for the web:
docker exec -it flutter flutter build web
4. Launch the web in debug mode.
flutter run -d web-server --web-port 8080