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
.
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
gcloud builds submit --tag europe-west1-docker.pkg.dev/PROJECT_ID/wordpress-repo/nombre-que-quieras
3. Despliegue a Cloud Run
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»
0 comentarios