Hace poco estuve trabajando en una solución ligera y escalable para desplegar un sitio WordPress aprovechando lo mejor del stack serverless de Google Cloud. En este post comparto brevemente los pasos clave para desplegar WordPress en Cloud Run usando una imagen personalizada basada en wordpress:php8.2-apache.

Arquitectura base

  • Frontend: WordPress PHP + Apache
  • Base de datos: Cloud SQL for MySQL
  • Almacenamiento multimedia: Cloud Storage
  • Hosting: Cloud Run (región europe-west1)
  • Docker Registry: Artifact Registry

1. Dockerfile personalizado

Modifiqué el puerto de Apache para ajustarlo a Cloud Run (8080) y me aseguré de copiar wp-config.php y aplicar lógica condicional de copia solo si WordPress no existía aún en /var/www/html.

Dockerfile

FROM wordpress:php8.2-apache
ENV APACHE_LISTEN_PORT=8080
RUN sed -i "s/80/\${APACHE_LISTEN_PORT}/g" /etc/apache2/ports.conf /etc/apache2/sites-available/000-default.conf
WORKDIR /usr/src/wordpress
COPY wp-config.php /usr/src/wordpress/wp-config.php
CMD ["/bin/sh", "-c", "if [ ! -f /var/www/html/index.php ]; then cp -r . /var/www/html && echo  WordPress copiado'; fi && cp /usr/src/wordpress/wp-config.php /var/www/html/wp-config.php && docker-entrypoint.sh apache2-foreground"]

2. Build y Push con Cloud Build


bash

gcloud builds submit --tag europe-west1-docker.pkg.dev/PROJECT_ID/wordpress-repo/nombre-que-quieras

3. Despliegue a Cloud Run

bash

gcloud run deploy nombre-de-tu-deploy\
  --image=europe-west1-docker.pkg.dev/PROJECT_ID/wordpress-repo/nombre-elejido\
  --region=europe-west1 \
  --platform=managed \
  --allow-unauthenticated \
  --service-account=wp-cloudrun-sa@PROJECT_ID.iam.gserviceaccount.com \
  --add-cloudsql-instances=PROJECT_ID:europe-southwest1:wp-sql \
  --update-env-vars="DB_NAME=...,DB_USER=...,DB_PASSWORD=...,DB_HOST=/cloudsql/PROJECT_ID:europe-southwest1:wp-sql"

4. Consideraciones técnicas

  • Usamos unix_socket con la ruta /cloudsql/... para conectar con Cloud SQL desde Cloud Run.
  • La cuenta de servicio debe tener roles/cloudsql.client.
  • Cloud Run requiere que el contenedor escuche por el puerto 8080.
  • Opcional: usar Cloud Storage para los uploads (GCS_BUCKET).

¿Vale la pena?
Sí. Cloud Run nos da:

  • Escalabilidad automática
  • Zero-downtime deployments
  • Aislamiento por revisión
  • Reducción de costos al ser «pay-per-request»

Víctor Arauco

With over 15 years of experience in the IT industry, including roles in development, operations, networking, DevOps, and sales engineering. I’m a devoted husband and proud father. I'm here to simplify your journey into the DevOps world.

0 comentarios

Deja una respuesta

Marcador de posición del avatar

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *