docker

Entornos de desarrollo local para WordPress

Viendo que muchos usan cosas como XAMPP o similares para trabajar con WordPress en local sobre Window$ se me ocurrió recopilar los entornos de desarrollo más usados para tener un sistema lo más cercano a los requerimientos de uso de WordPresss. Ya que Window$ al no ser compatible con POSIX da muchos problemas, aparte que no es lo más realista en comparación con un hosting linux, compartido o vps.

Docker

Usar containers es una de las formas más rápidas y fáciles de usar para desplegar WordPress, aunque como desventaja hay que familiarizarse antes con el uso de Docker y docker-compose.

https://hub.docker.com/_/wordpress

Vagrant

Otra aproximación es usar virtualización, en este caso con Vagrant que usa VirtualBox para desplegar una imagen de linux con la que usar WordPress.

https://varyingvagrantvagrants.org/

WordPress Playground

WordPress Playground ofrece la posibilidad de tener un entorno de desarrollo a través de interfaz web en la nube y también permite su instalación en local.

https://wordpress.org/playground/

WP-Env

WP-Env está basada en Docker y nos sirve para desplegar un entorno de desarrollo en local. Enfocada al diseño de temas y plugins.

https://developer.wordpress.org/block-editor/getting-started/devenv/get-started-with-wp-env/

Instalar entorno desarrollo drupal con docker

1- Instalar docker

https://docs.docker.com/engine/installation/

2- Descargar docker-compose

https://docs.docker.com/compose/install/

3- Crear archivo dockerfile en un directorio de trabajo.

FROM php:7-apache
RUN a2enmod rewrite

# install the PHP extensions we need (git for Composer, mysql-client for mysqldump)
RUN apt-get update && apt-get install -y libpng12-dev libjpeg-dev libpq-dev git mysql-client-5.5 wget \
&& rm -rf /var/lib/apt/lists/* \
&& docker-php-ext-configure gd –with-png-dir=/usr –with-jpeg-dir=/usr \
&& docker-php-ext-install gd mbstring opcache pdo pdo_mysql pdo_pgsql zip

# set recommended PHP.ini settings
# see https://secure.php.net/manual/en/opcache.installation.php
RUN { \
echo ‘opcache.memory_consumption=128’; \
echo ‘opcache.interned_strings_buffer=8’; \
echo ‘opcache.max_accelerated_files=4000’; \
echo ‘opcache.revalidate_freq=60’; \
echo ‘opcache.fast_shutdown=1’; \
echo ‘opcache.enable_cli=1’; \
} > /usr/local/etc/php/conf.d/opcache-recommended.ini

WORKDIR /root

#Configure PHP memory limit
RUN { \
echo «memory_limit = 256M»; \
} >> /usr/local/etc/php/php.ini

#Install Drush 8.1.2
RUN wget https://github.com/drush-ops/drush/releases/download/8.1.2/drush.phar && php drush.phar core-status && chmod +x drush.phar \
&& mv drush.phar /usr/local/bin/drush

#Install Drupal Console
RUN curl http://drupalconsole.com/installer -L -o drupal.phar
RUN mv drupal.phar /usr/local/bin/drupal && chmod +x /usr/local/bin/drupal
RUN drupal init

WORKDIR /var/www/html

4- Crear la imagen docker

build -t YOUR_IMAGE_NAME .

5- Crear el archivo docker-compose.yml

Cambiar /home/user/webdev/ por el directorio de trabajo.

version: ‘2’
services:
drupal-web:
image: YOUR_IMAGE_NAME:latest
ports:
– «8080:80»
depends_on:
– mysql-server
links:
– mysql-server:mysql
volumes:
– /home/user/webdev/drupal-test/htmlroot:/var/www/html
mysql-server:
image: mysql
environment:
MYSQL_DATABASE: drupal
MYSQL_ROOT_PASSWORD: root
MYSQL_USER: drupal
MYSQL_PASSWORD: drupal
volumes:
– /home/user/webdev/drupal-test/mysql:/var/lib/mysql
tendremos que crear el directorio drupal-test y los subdirectorios mysql y htmlroot en el directorio de trabajo. Con esto mantenemos los cambios al destruir los containers.

6- Arrancamos los dos containers docker, el servidor web y mysql.

-compose up -d

7- Con los containers levantados entramos en el container web para instalar drupal via drush.

-compose exec drupal-web bash

8- Ya dentro del container ejecutamos los comandos de instalación drupal.

$drush dl drupal

$cd drupal-x.x.x

$drush site-install standard –db-url=mysql://drupal:drupal@mysql/drupal

$exit

#chown -R www-data:www-data /directoriotrabajo/drupal-test/htmlroot/drupal-x.x.x/sites

9- Cambiar la contraseña del usuario admin entrando en la web del container.

http://localhost:8080/drupal-x.x.x

10- Por último, para parar los containers y liberar memoria ejecutamos la orden correspondiente.

-compose stop