You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

116 lines
5.7 KiB

3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
  1. # Crea tu propio servidor de WordPress con Docker
  2. 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.
  3. 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.
  4. ## Archivo docker-compose.yml
  5. 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.`
  6. ```bas
  7. $ mkdir wordpress
  8. gmarx@gmarx-MacBookAir:~/wordpress$ vi docker-compose.yml
  9. ```
  10. y agrega el siguiente código al archivo `docker-compose.yml`:
  11. ```yaml
  12. version: '3.1'
  13. services:
  14. wordpress:
  15. image: wordpress
  16. restart: always
  17. ports:
  18. - 8080:80
  19. environment:
  20. WORDPRESS_DB_HOST: db
  21. WORDPRESS_DB_USER: admin
  22. WORDPRESS_DB_PASSWORD: examplePass
  23. WORDPRESS_DB_NAME: exampledb
  24. volumes:
  25. - wordpress:/var/www/html
  26. db:
  27. image: mysql:5.7
  28. restart: always
  29. environment:
  30. MYSQL_DATABASE: exampledb
  31. MYSQL_USER: admin
  32. MYSQL_PASSWORD: exmaplePass
  33. MYSQL_RANDOM_ROOT_PASSWORD: '1'
  34. volumes:
  35. - db:/var/lib/mysql
  36. volumes:
  37. wordpress:
  38. db:
  39. ```
  40. 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).
  41. ## Arrancando el servidor
  42. 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:
  43. ```bash
  44. gmarx@gmarx-MacBookAir:~/wordpress$ docker-compose up -d
  45. 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
  46. c2f98ef02756: Pull complete
  47. 50e11300b0a6: Pull complete
  48. de37513870b9: Pull complete
  49. f25501789abc: Pull complete
  50. 0cf8e3442952: Pull complete
  51. d45ce270a7e6: Pull complete
  52. 534cdc5a6ea6: Pull complete
  53. Digest: sha256:e9da0d6c867249f364cd2292ea0dd01d7281e8dfbcc3e4b39b823f9a790b237b
  54. Status: Downloaded newer image for wordpress:latest
  55. Pulling db (mysql:5.7)...
  56. 5.7: Pulling from library/mysql
  57. 69692152171a: Already exists
  58. 1651b0be3df3: Pull complete
  59. 951da7386bc8: Pull complete
  60. 0f86c95aa242: Pull complete
  61. 37ba2d8bd4fe: Pull complete
  62. 6d278bb05e94: Pull complete
  63. 497efbd93a3e: Pull complete
  64. a023ae82eef5: Pull complete
  65. e76c35f20ee7: Pull complete
  66. e887524d2ef9: Pull complete
  67. ccb65627e1c3: Pull complete
  68. Digest: sha256:a682e3c78fc5bd941e9db080b4796c75f69a28a8cad65677c23f7a9f18ba21fa
  69. Status: Downloaded newer image for mysql:5.7
  70. Creating wordpress_wordpress_1 ... done
  71. Creating wordpress_db_1 ... done
  72. ```
  73. 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í:
  74. ![wordpress](http://gmarxcc.com:8088/gmarx/wordpress-docker/src/branch/master/wordpress.png)
  75. 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.
  76. ![install-wp2](http://gmarxcc.com:8088/gmarx/wordpress-docker/src/branch/master/install-wp2.png)
  77. ​ Listo, ahora solo tienes que hacer *login* con tu nombre de usuario y contraseña...
  78. ![install_wp3](http://gmarxcc.com:8088/gmarx/wordpress-docker/src/branch/master/install_wp3.png)
  79. Finalmente debes poder entrar al sitio en modo administrador para poder gestionarlo y configurarlo a tu antojo, como un sitio de WordPress.
  80. ![wordpress-online](http://gmarxcc.com:8088/gmarx/wordpress-docker/src/branch/master/wordpress-online.png)
  81. 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.
  82. 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` .