WordPress, Nginx, Ghost y Telegram con Docker - I Meetup Docker Córdoba - Quaip
Upcoming SlideShare
Loading in...5
×
 

WordPress, Nginx, Ghost y Telegram con Docker - I Meetup Docker Córdoba - Quaip

on

  • 351 views

Presentación de Sergio Gómez sobre la instalación de contenedores Docker de WordPress, Nginx como proxy inverso, Ghost y Telegram (Webogram), dentro del programa del I Meetup Docker Córdoba, ...

Presentación de Sergio Gómez sobre la instalación de contenedores Docker de WordPress, Nginx como proxy inverso, Ghost y Telegram (Webogram), dentro del programa del I Meetup Docker Córdoba, celebrado en coSfera el 05/06/2014

Statistics

Views

Total Views
351
Views on SlideShare
252
Embed Views
99

Actions

Likes
0
Downloads
3
Comments
0

2 Embeds 99

http://blog.quaip.com 94
https://twitter.com 5

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    WordPress, Nginx, Ghost y Telegram con Docker - I Meetup Docker Córdoba - Quaip WordPress, Nginx, Ghost y Telegram con Docker - I Meetup Docker Córdoba - Quaip Presentation Transcript

    • I Meetup Docker Córdoba @sergiogomez WordPress y Nginx con Docker
    • I Meetup Docker Córdoba @sergiogomez ● Socio fundador de QuaiP.com junto al gran @dperilla ● Web Developer Ruby on Rails / HTML / CSS / jQuery ● 15 años de experiencia en aplicaciones web Sergio Gómez - @sergiogomez Una vida dedicada a la sonrisa, a mis niños, y al rock and roll
    • I Meetup Docker Córdoba @sergiogomez ● Desarrollo e infraestructuras avanzadas de VoIP ● Servidores de streaming de radio y TV ● Cloud, VPS y servidores avanzados para aplicaciones
    • I Meetup Docker Córdoba @sergiogomez 1 Generar una imagen Docker de WordPress
    • I Meetup Docker Córdoba @sergiogomez ¿Qué necesitamos? + Un sistema operativo (Ubuntu) + Una base de datos (MySQL) + Un servidor web (Nginx) + Motor de PHP (PHP-FPM) + Instalar y configurar WordPress
    • I Meetup Docker Córdoba @sergiogomez Dockerfile (1/2) FROM ubuntu:14.04 RUN dpkg-divert --local --rename --add /sbin/initctl RUN ln -sf /bin/true /sbin/initctl RUN apt-get update RUN apt-get -y upgrade ... RUN apt-get -y install mysql-server mysql-client nginx php5-fpm php5-mysql php-apc pwgen python-setuptools curl git unzip ... RUN apt-get -y install php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-sqlite php5- tidy php5-xmlrpc php5-xsl # mysql config (...) # nginx config (...) # php-fpm config (...) # nginx site conf (...) Fuente: https://github.com/eugeneware/docker-wordpress-nginx
    • I Meetup Docker Córdoba @sergiogomez Dockerfile (2/2) # Supervisor Config (...) # Install Wordpress ADD http://wordpress.org/latest.tar.gz /usr/share/nginx/latest.tar.gz RUN cd /usr/share/nginx/ && tar xvf latest.tar.gz && rm latest.tar.gz RUN mv /usr/share/nginx/html/5* /usr/share/nginx/wordpress RUN rm -rf /usr/share/nginx/www RUN mv /usr/share/nginx/wordpress /usr/share/nginx/www RUN chown -R www-data:www-data /usr/share/nginx/www # Wordpress Initialization and Startup Script ADD ./start.sh /start.sh RUN chmod 755 /start.sh # private expose EXPOSE 3306 EXPOSE 80 CMD ["/bin/bash", "/start.sh"] Fuente: https://github.com/eugeneware/docker-wordpress-nginx
    • I Meetup Docker Córdoba @sergiogomez start.sh La primera vez que se ejecuta: + Crea una base de datos para WordPress + Genera una contraseña para la base de datos + Instalar plugin de Nginx para WordPress + Configurar enlaces permanentes + Crear el fichero wp-config.php con los datos generados Cada vez que se ejecuta: + Inicia todos los servicios (supervisord)
    • I Meetup Docker Córdoba @sergiogomez Creación de la imagen $ git clone https://github.com/eugeneware/docker-wordpress-nginx.git $ cd docker-wordpress-nginx # Podemos personalizar el fichero nginx-site.conf $ docker build -t docker-wordpress-nginx . Fuente: https://github.com/eugeneware/docker-wordpress-nginx Al finalizar dispondremos de una imagen que ya podríamos usar para generar tantos contenedores como instancias de WordPress queramos instalar $ docker run --name blog1 -d docker-wordpress-nginx Pero aún no vamos a hacerlo, ya que necesitamos acceder a cada instancia desde fuera con su URL (p.e. blog.dominio.com)
    • I Meetup Docker Córdoba @sergiogomez 2 Instalar un servidor Nginx que actúe como proxy inverso de cada instancia
    • I Meetup Docker Córdoba @sergiogomez ¿Qué necesitamos? + Un sistema operativo (Ubuntu) + Un servidor web (Nginx) + Configurar Nginx para que enlace con los contenedores Docker que se vayan creando
    • I Meetup Docker Córdoba @sergiogomez Dockerfile Fuente: https://github.com/jwilder/nginx-proxy FROM ubuntu:12.04 # Install Nginx. RUN apt-get update RUN apt-get install -y python-software-properties wget RUN add-apt-repository -y ppa:nginx/stable RUN apt-get update RUN apt-get install -y nginx RUN echo "daemon off;" >> /etc/nginx/nginx.conf (...) # Install Forego (Foreman in Go) # Install Docker-Gen (Generador de ficheros a partir de metadatos de contenedores Docker) EXPOSE 80 ENV DOCKER_HOST unix:///tmp/docker.sock CMD ["forego", "start", "-r"]
    • I Meetup Docker Córdoba @sergiogomez Creación de la imagen $ git clone https://github.com/jwilder/nginx-proxy.git $ cd nginx-proxy # Podemos personalizar el fichero nginx.tmpl (plantilla de los virtual host generados) $ docker build -t nginx-proxy . Una vez generada la imagen, creamos un contenedor, y ahora sí podemos usar la imagen de WordPress para crear contenedores accesibles con su URL $ docker run --name proxy -d -p 80:80 -v /var/run/docker.sock:/tmp/docker.sock -t nginx-proxy $ docker run --name blog1 -e VIRTUAL_HOST=blog.dominio.com -d docker-wordpress-nginx Fuente: https://github.com/jwilder/nginx-proxy
    • I Meetup Docker Córdoba @sergiogomez Demostración
    • I Meetup Docker Córdoba @sergiogomez ¿Problemas?
    • I Meetup Docker Córdoba @sergiogomez Retos pendientes + Comprobar el rendimiento + Realizar tareas de mantenimiento + Depuración de problemas + Migración a otro servidor + ...
    • I Meetup Docker Córdoba @sergiogomez Bonus Track 1 Instalar Ghost
    • I Meetup Docker Córdoba @sergiogomez Creación del contenedor $ docker pull dockerfile/ghost $ mkdir ghost $ cd ghost/ $ wget https://raw.githubusercontent.com/TryGhost/Ghost/master/config.example.js -O config.js $ mkdir -p content/data $ mkdir -p content/images $ mkdir -p content/themes # Editamos el fichero config.js y configuramos el entorno de producción # Reemplazamos 127.0.0.1 por 0.0.0.0 $ docker run --name ghost1 -e VIRTUAL_HOST=ghost.dominio.com -v /path/to/ghost:/ghost- override -d dockerfile/ghost Fuente: https://github.com/dockerfile/ghost
    • I Meetup Docker Córdoba @sergiogomez Bonus Track 2 Instalar Telegram
    • I Meetup Docker Córdoba @sergiogomez Dockerfile FROM dockerfile/nodejs RUN mkdir -p /webogram ADD https://github.com/sergiogomez/webogram/archive/master.zip /webogram/webogram- master.zip RUN cd /webogram && unzip webogram-master.zip && rm -Rf webogram-master.zip WORKDIR /webogram/webogram-master/app EXPOSE 80 CMD ["node", "../server.js"]
    • I Meetup Docker Córdoba @sergiogomez Creación de la imagen y varios contenedores $ git clone https://github.com/sergiogomez/docker-webogram.git $ cd docker-webogram $ docker build -t docker-webogram . $ docker run --name chat1 -e VIRTUAL_HOST=chat.dominio1.com -d docker-webogram $ docker run --name chat2 -e VIRTUAL_HOST=chat.dominio2.com -d docker-webogram
    • I Meetup Docker Córdoba @sergiogomez ¿Alguna pregunta?
    • I Meetup Docker Córdoba @sergiogomez ¡¡MUCHÍSIMAS GRACIAS!!