es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

No se puede ejecutar la aplicación web de Flutter en Google Cloud Runner.

He creado una aplicación de Flutter y quiero implementarla en Cloud Run,
Y obtuve el mensaje de error:

Error de Cloud Run: El contenedor no pudo iniciar. No se pudo iniciar y escuchar en el puerto definido por la variable de entorno PORT. Es posible que los registros de esta revisión contengan más información. URL de registros:

Y seguí la [guía de solución de problemas] (https://cloud.google.com/run/docs/troubleshooting)

Verifiqué los 5 puntos, pero no encontré ninguna solución.

Y noté la siguiente información:

No se encuentra un paquete activo dhttpd

Imagen

Mi archivo Dockerfile es:

# Obtener imagen de base oficial
FROM dart

# Establecer directorio de trabajo
WORKDIR /flutter

# Instalar dependencias de la aplicación
RUN dart pub global activate dhttpd

# Agregar `/app/node_modules/.bin` a $PATH
ENV PATH $PATH:$HOME/.pub-cache/bin

# Agregar la aplicación
COPY build/web ./

EXPOSE 8080

# Iniciar la aplicación y ejecutar en 0.0.0.0
CMD dart pub global run dhttpd --host 0.0.0.0

Esa es toda la información que tengo, ¿cómo inicio la imagen con Cloud Run?

EDICIÓN:
Como no sé por qué mi imagen no puede obtener el dhttpd,
He utilizado otro servidor web estático, funcionó para mí.
He cambiado el Dockerfile de la siguiente manera:

# Obtener imagen de base oficial
FROM node

# Establecer directorio de trabajo
WORKDIR /flutter

# Instalar dependencias de la aplicación
RUN npm i -g serve

# Agregar `/app/node_modules/.bin` a $PATH
ENV PATH $PATH:$HOME/.pub-cache/bin

# Agregar la aplicación
COPY build/web ./

EXPOSE 8080

# Iniciar la aplicación y ejecutar en 0.0.0.0
CMD serve -p 8080
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para implementar una aplicación Flutter en Cloud Run, necesitas algunas configuraciones para que funcione correctamente. Si ya has seguido el proceso de solución de problemas y aún no puedes resolverlo, sigue los pasos a continuación:

    1. Asegúrate de haber construido la aplicación Flutter, por ejemplo, flutter build web.
    2. Crea un nuevo archivo Dockerfile utilizando la imagen oficial de Dart como imagen base. Incluye las siguientes líneas para copiar los archivos web de Flutter en la imagen Docker y agregar un servidor de archivos estáticos:

    # Usa la imagen oficial de Dart como imagen base
    FROM google/dart:2.12 AS build
    
    # Establece el directorio de trabajo
    WORKDIR /app
    
    # Copia los archivos web de Flutter en la imagen Docker
    COPY ./build web:web
    
    # Instala el paquete Dart que proporciona el servidor de archivos estáticos
    RUN pub global activate dhttpd
    
    # Expone el puerto
    EXPOSE 8080
    
    # Inicia el servidor de archivos estáticos
    CMD ["pub", "global", "run", "dhttpd", "-p", "8080", "-h", "0.0.0.0", "web:web"]
    
    1. Construye tu imagen Docker utilizando Cloud Build:
    gcloud builds submit \
      --tag gcr.io/PROJECT-ID/IMAGE-NAME \
      --project PROJECT-ID
    
    1. Implementa la imagen del contenedor en Cloud Run:
    gcloud run deploy APP-NAME \
      --image gcr.io/PROJECT-ID/IMAGE-NAME \
      --platform managed \
      --region REGION \
      --project PROJECT-ID
    

    Asegúrate de reemplazar PROJECT-ID, IMAGE-NAME, APP-NAME y REGION con tus valores personalizados.

    Siguiendo estos pasos, la aplicación web de Flutter se implementará en Cloud Run y podrás acceder a ella a través de la URL proporcionada por gcloud run deploy.

Comments are closed.