React + Firebase en Google Cloud

Desplegar una aplicación

Victor Aguilar

https://vico.dev

+

Objetivos

Desplegar una aplicación construida con React & Firebase en Google Cloud Run

https://vico.dev

Requerimientos

  • Tener docker y docker-compose
  • Tener una cuenta google (o correo gmail)
  • Tener cuenta en github

https://vico.dev

El Proyecto

https://vico.dev

Instalación (local)

https://vico.dev

Instalación (local)

1. Clonar el Proyecto

{
  apiKey: "........",
  authDomain: "xxxx.firebaseapp.com",
  databaseURL: "https://xxxx.firebaseio.com",
  projectId: "xxxx",
  storageBucket: "xxxx.appspot.com",
  messagingSenderId: "0101923",
  appId: "......"
}

https://vico.dev

git clone https://github.com/cpena/extralove

2. Obtener la Config  de  Firebase para el proyecto 

https://vico.dev

2. Obtener la Config  de  Firebase para el proyecto 

Despliegue

https://vico.dev

https://vico.dev

Es un entorno autogestionado  para desplegar aplicaciones sin estado que esten contenerizadas

Aplicaciones sin estado

Son aplicaciones que no necesitan guardar los datos por si misma

estado

app

Despliegue

# 1. Descarga
wget https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-329.0.0-darwin-x86_64.tar.gz

# 2. Preparación
tar xopf google-cloud-sdk-329.0.0-darwin-x86_64.tar.gz

# 3. Instalación
./google-cloud-sdk/install.sh

# 4. Configuración
./google-cloud-sdk/bin/gcloud init

Despliegue

Configurar el  proyecto en Google Cloud 

https://vico.dev

Despliegue

Dockerizar el Proyecto

# build environment
FROM node:12-alpine as react-build
WORKDIR /app
COPY . ./
RUN yarn
RUN yarn build

# server environment
FROM nginx:alpine
COPY nginx.conf /etc/nginx/conf.d/configfile.template

COPY --from=react-build /app/build /usr/share/nginx/html
COPY --from=react-build /app/src/firebase-config.json /usr/share/nginx/html/src/firebase-config.json

ENV PORT 8080
ENV HOST 0.0.0.0

EXPOSE 8080
CMD sh -c "envsubst '\$PORT' < /etc/nginx/conf.d/configfile.template > /etc/nginx/conf.d/default.conf && nginx -g 'daemon off;'"

Dockerfile

Despliegue

Configuración de Nginx

server {
     listen       $PORT;
     server_name  localhost;

     location / {
         root   /usr/share/nginx/html;
         index  index.html index.htm;
         try_files $uri /index.html;
     }

     gzip on;
     gzip_vary on;
     gzip_min_length 10240;
     gzip_proxied expired no-cache no-store private auth;
     gzip_types text/plain text/css text/xml text/javascript application/x-javascript application/xml;
     gzip_disable "MSIE [1-6]\.";

}

https://vico.dev

Despliegue

Despliegue en Cloud Run


# 1. Construye la imagen docker y la carga 
# en el Container Registry
gcloud builds submit --tag gcr.io/<project_name>/<service_name>
# 2. Despliega la imagen construida
gcloud beta run deploy --image gcr.io/<project_name>/<service_name> --platform managed

https://vico.dev

¿Que más agregar desde aquí?

  • Integración Continua
  • Dominio Personalizado
  • Despliegue de multiples ambientes (staging, production)

https://vico.dev

Desplegar una app Reat + Firebase en Google Cloud

By Victor Aguilar

Desplegar una app Reat + Firebase en Google Cloud

Como desplegar un proyecto

  • 317