Como configurar nginx como proxy reverso en un contenedor de docker

Docker Logo

Vamos a configurar un contenedor de docker basado en nginx para que funcione como un proxy reverso contra un contenedor de Kibana y otro de elasticsearch.

Para facilitar la creación y gestión de todos los contenedores vamos a utilizar docker compose.

El acceso a Kibana y a elasticsearch desde el host se realizará siempre desde el contenedor de nginx.

La topología de este sistema es:

  • el host accede a nginx
  • nginx accede a kibana y a elasticseach
  • kibana accede a elasticsearch

Desde nuestro host solo tendremos acceso al contenedor de nginx, ya que el resto de contenedores no van a tener expuestos los puertos de cada servicio.

Sigue leyendo

Anuncios

Utilizar docker compose para gestionar y administrar varios contenedores

Docker Logo

En el anterior artículo Preparar un entorno de desarrollo basado docker con elasticseach, kibana y sense vimos como preparar dos contenedores docker, uno basado en elasticsearch y otro basado en kibana.

Lo que vamos a ver en este pequeño artículo es una guía de como preparar los mismos contenedores pero utilizando docker compose. Como sabemos docker compose es una herramienta de docker con la que nos permiten manejar varios contenedores con un solo comando.

Utilizando docker compose nos evitamos la tediosa tarea de tener que crear, arrancar, parar y borrar cada uno de los contenedores por separado utilizados en nuestro proyecto.

docker-compose.yml

Es el fichero donde le decimos a docker compose los contenedores que tiene que gestionar y administrar.

Vamos a crear nuestro entorno de desarrollo basado en un contenedor de elasticsearch y otro de kibana.

El contenedor de Kibana

  • se encontrará lincado al contenedor de elasticsearch
  • dejaremos su puerto disponible en el host, en el primer puerto libre que tenga la máquina

El contenedor de elasticsearch

  • dejaremos sus puertos disponible en el host, en el primer puerto libre que tenga la máquina, por si fuera necesario acceder directamente por el API Rest a elasticsearch.

El primer paso será crear un directorio y dentro de él creamos el fichero docker-compose.yml.

$ mkdir test-elasticsearch-kibana
$ cd test-elasticsearch-kibana
$ touch docker-compose.yml

Y editamos el fichero docker-compose-yml

elasticsearch:
  image: elasticsearch:2.1.1
  container_name: test-elasticsearch-2.1.1
  ports:
    - "9200"
    - "9300"
  expose:
    - "9200"
    - "9300"

kibana:
  image: kibana:4.3.1
  container_name: test-kibana-4.3.1
  links:
    - elasticsearch
  ports:
    - "5601"

donde,

  • image. Indicamos la imagen a partir de la cual queremos crear el contenedor.
  • container_name: El nombre del contenedor. Es opcional y si no le ponemos uno docker compose le asignará un nombre por defecto.
  • ports: Los puertos que queremos tener disponible en la maquina host.
  • expose: Los puertos que deben ser expuestos para otros contenedores (links).
  • links: Creamos un link con el contenedor de elasticsearch desde el contenedor de kibana.

Operaciones principales

Una vez tenemos el fichero creado, procederemos como siempre.

Arrancamos los dos contenedores

$ docker-compose up -d

Paramos los dos contenedores

$ docker-compose stop

Borramos los dos contenedores

$ docker-compose rm

Ver los puertos mapeados de uno de los contenedores

$ docker-compose port elasticsearch 9200

Instalar el plugin sense en Kibana

docker exec test-kibana-4.3.1 /opt/kibana/bin/kibana plugin --install elastic/sense

etc