commit 0a1f33b531e78e97a0fa0034877ce2bbfc739606 Author: Gerardo Marx Date: Tue Jun 22 13:55:39 2021 -0500 initial diff --git a/Readme.md b/Readme.md new file mode 100644 index 0000000..ef565b5 --- /dev/null +++ b/Readme.md @@ -0,0 +1,115 @@ +# Crea tu propio servidor de WordPress con Docker + +Wordpress es un gestor de contenidos enfocado en la creación de páginas Web y especializado en Blogs. A pesar de tener más de 18 años desde su lanzamiento, sigue siendo una de las plataformas más usadas, ya sea como un servicio instalado en tu propio servidor o a través del servicio de hospedaje que la compañía ofrece. + +En este post, realizado en Wordpress, te enseñare como montar una imagen de WordPress con Docker. Para esto, supondremos que ya tienes una noción básica de Docker. Sino hecha un vistazo a esta guía básica sobre su instalación y uso. + +## Archivo docker-compose.yml + +Docker cuenta con una serie de comandos para crear/montar imágenes en minutos, entre ellas esta `docker-compose` y `docker stack deploy` , esto es posible a partir de un archivo en formato `yml` que le indica como montar la imagen siempre de la misma manera; y así tener reproducibilidad. Por lo tanto crea una carpeta para el proyecto y crea el archivo (con vi, nano o tu editor de preferencia) `docker-compose.yml.` + +```bas +$ mkdir wordpress +gmarx@gmarx-MacBookAir:~/wordpress$ vi docker-compose.yml +``` + +y agrega el siguiente código al archivo `docker-compose.yml`: + +```yaml +version: '3.1' + +services: + + wordpress: + image: wordpress + restart: always + ports: + - 8080:80 + environment: + WORDPRESS_DB_HOST: db + WORDPRESS_DB_USER: admin + WORDPRESS_DB_PASSWORD: examplePass + WORDPRESS_DB_NAME: exampledb + volumes: + - wordpress:/var/www/html + + db: + image: mysql:5.7 + restart: always + environment: + MYSQL_DATABASE: exampledb + MYSQL_USER: admin + MYSQL_PASSWORD: exmaplePass + MYSQL_RANDOM_ROOT_PASSWORD: '1' + volumes: + - db:/var/lib/mysql + +volumes: + wordpress: + db: +``` + +El archivo le indica a *Docker* las imágenes y versión que se usaran (`services`) en este caso se etiquetan dos: `wordpress` y `db`; por lo tanto tendremos dos contenedores. En cada caso se indican los puertos que estarán expuestos (para `wordpress` 8080 y `db` ninguno), las variables (*environment*) usadas en cada contenedor y sus respectivos valores; en estas variables no olvides indicar el mismo usuario y su respectivo password para wordpress pueda accesar a la base de datos de mysql . En cada servicio también se indican de que manera se conectan los volúmenes de datos y a donde apuntan (origen:destino). + +## Arrancando el servidor + +Ahora para probar el contenedor solo ejecuta `docker-compose up -d` desde la carpeta donde esta el archivo `docker-compose.yml` y obtendrás unos resultados similares a los siguientes: + +```bash +gmarx@gmarx-MacBookAir:~/wordpress$ docker-compose up -d +Creating network "wordpress_default" with the default driverCreating volume "wordpress_wordpress" with default driverCreating volume "wordpress_db" with default driverPulling wordpress (wordpress:)...latest: Pulling from library/wordpress69692152171a: Already exists2040822db325: Pull complete9b4ca5ae9dfa: Pull completeac1fe7c6d966: Pull complete5b26fc9ce030: Pull complete3492f4769444: Pull complete1dec05775a74: Pull complete77107a42338e: Pull completef58e4093c52a: Pull completed32715f578d3: Pull complete7a73fb2558ce: Pull complete667b573fcff7: Pull complete75e2da936ffe: Pull complete759622df3a7b: Pull complete +c2f98ef02756: Pull complete +50e11300b0a6: Pull complete +de37513870b9: Pull complete +f25501789abc: Pull complete +0cf8e3442952: Pull complete +d45ce270a7e6: Pull complete +534cdc5a6ea6: Pull complete +Digest: sha256:e9da0d6c867249f364cd2292ea0dd01d7281e8dfbcc3e4b39b823f9a790b237b +Status: Downloaded newer image for wordpress:latest +Pulling db (mysql:5.7)... +5.7: Pulling from library/mysql +69692152171a: Already exists +1651b0be3df3: Pull complete +951da7386bc8: Pull complete +0f86c95aa242: Pull complete +37ba2d8bd4fe: Pull complete +6d278bb05e94: Pull complete +497efbd93a3e: Pull complete +a023ae82eef5: Pull complete +e76c35f20ee7: Pull complete +e887524d2ef9: Pull complete +ccb65627e1c3: Pull complete +Digest: sha256:a682e3c78fc5bd941e9db080b4796c75f69a28a8cad65677c23f7a9f18ba21fa +Status: Downloaded newer image for mysql:5.7 +Creating wordpress_wordpress_1 ... done +Creating wordpress_db_1 ... done +``` + +si nada sale mal quiere decir que ahora tienes un contenedor listo para configurar con wordpress. Para lograr esto visita la página `localhost:8080` en un explorador como mozilla. El resultado será algo así: + +![wordpress](/home/gmarx/Pictures/wordpress.png) + +ahora solo necesitas seguir los pasos que se te irán presentando en el propio navegador para que se defina el nombre del sitio, *username* principal, contraseña, entre otras cosas. Para finalizar nececitas hacer click en el botón de instalar WordPress. + +![install-wp2](/home/gmarx/Pictures/install-wp2.png) + +​ Listo, ahora solo tienes que hacer *login* con tu nombre de usuario y contraseña...![install_wp3](/home/gmarx/Pictures/install_wp3.png) + +Finalmente debes poder entrar al sitio en modo administrador para poder gestionarlo y configurarlo a tu antojo, como un sitio de WordPress. + + + + + +![wordpress-online](/home/gmarx/Pictures/wordpress-online.png) + + + +Recuerda que este contenedor quedó vinculado con un volumen creado por Docker, el volumen se llama `wordpress` y en éste se almacenara todos los datos del servicio de WordPress, por lo que el contenedor tendrá persistencia de datos. + +Puedes probar creando una entrada en el blog y después detener el contenedor ejecutando `docker-compose down` , desde la misma carpeta del proyecto y después volver a arrancar el servicios con `docker-compose up -d` . + + + + \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..a60cecf --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,31 @@ +version: '3.1' + +services: + + wordpress: + image: wordpress + restart: always + ports: + - 8080:80 + environment: + WORDPRESS_DB_HOST: db + WORDPRESS_DB_USER: admin + WORDPRESS_DB_PASSWORD: examplePass + WORDPRESS_DB_NAME: exampledb + volumes: + - wordpress:/var/www/html + + db: + image: mysql:5.7 + restart: always + environment: + MYSQL_DATABASE: exampledb + MYSQL_USER: admin + MYSQL_PASSWORD: examplePass + MYSQL_RANDOM_ROOT_PASSWORD: '1' + volumes: + - db:/var/lib/mysql + +volumes: + wordpress: + db: