Hola, hoy vamos a ver cómo podemos utilizar un Docker Compose para ejecutar Flutter en el navegador web de la máquina anfitriona dónde se ejecuta Docker.
Lo primero que vamos a hacer es crear el archivo docker-compose.yml y añadir este contenido:
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: - ./ruta_app:/home/mobiledevops/app - /tmp/.X11-unix:/tmp/.X11-unix networks: - docker-network networks: docker-network: driver: bridge external: true
En ./ruta_app está la APP en Flutter o directorio de APP.
El archivo flutter_arm está dentro de ./Dockerfile, lo creamos y añadimos este contenido (aunque ponga arm, funciona en una máquina no arm):
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 #Mantener el contenedor en ejecucion CMD ["tail", "-f", "/dev/null"]
En este Dockerfile, hemos agregado la instalación de las dependencias libgl1-mesa-dev
y libgtk-3-dev
, que son necesarias para ejecutar Flutter en modo web.
Ahora, para ejecutar la web tendremos que hacer lo siguiente:
- Levantamos el docker:
docker compose up -d
2. Instalamos las dependencias:
docker exec -it flutter flutter pub get
3. Compila al web:
docker exec -it flutter flutter build web
4. Lanza la web en debug.
flutter run -d web-server --web-port 8080
Ingeniero en Informática, Investigador, me encanta crear cosas o arreglarlas y darles una nueva vida. Escritor y poeta. Más de 20 APPs publicadas y un libro en Amazon.