Mover el directorio docker en ubuntu

Usar docker es sencillo y rápido, pero, como todo, tienes que tener cuidado con todo lo que ocupa espacio ya que los discos y las particiones son finitas… Y los contendores docker ocupan espacio (bastante), así que aquí dejo el método para mover el directorio de datos de la partición por defecto a otra cualquiera que queramos y para la que tengamos espacio de sobra.

Docker y ubuntu

Lo primero que hay que saber es que el directorio por defecto donde docker guarda sus imágenes, contenedores y demás cosas que ocupan espacio es:

/var/lib/docker

Que, generalmente, está en la partición raiz (o la que tengamos para var) que no suele ser muy grande. Supongamos que queremos moverla a un disco de datos con capacidad suficiente como este:

/mnt/disks/data/docker

Para ello lo que tendremos que hacer es: parar el servicio docker

sudo service docker stop

Crear un archivo llamado daemon.json en el directorio /etc/docker con este contenido:

{ 
   "graph": "/path/to/your/docker" 
}

Copiamos el directorio original al nuevo y lo renombramos por seguridad (ya lo borraremos después)

sudo rsync -aP /var/lib/docker/ /path/to/your/docker
sudo mv /var/lib/docker /var/lib/docker.old

Reiniciamos el servicio docker y todo debería estar como antes del cambio (podéis comprobar con un docker ps si se ha levantado todo lo que teníais funcionando antes).

sudo service docker start

Después de comprobar que todo está ok, ya podemos borrar el original y habremos terminado con la operación del todo:

sudo rm -rf /var/lib/docker.old

Docker para desarrollar con tomcat

Las ventajas de utilizar docker para desarrollar y desplegar la aplicaciones nunca deja de sorprenderme. Conseguimos con una simple definición en texto crear máquinas con configuraciones exactas a ejecutar en todas partes. Una de las cosas en donde todavía no había aplicado docker es en la aplicaciones web que desarrollo en Java. Habitualmente se requiere de un servidor tomcat (con cierta versión de máquina virtual de java) y una base de datos (yo he trabajado con mysql mayoritariamente) con otra versión particular.

Dado que las versiones de base de datos y de tomcat y de java han sido muy variables con el tiempo y que los proyectos no solo hay que desarrollarlos y entregarlos sino que hay que mantenerlos, nos encontramos con una situación imposible en que cualquier combinación de estos elementos es posible y necesaria para probar cualquier mínimo cambio que queramos realizar (si hay cosas muy compatibles que se pueden hacer con versiones nuevas y muchas otras que no)… El caso es que esta vez voy a deciros cómo podemos olvidarnos de una vez por todas de estos problemas utilizando docker y docker-compose.

Si eres el desgraciado usuario de una versión de windows las cosas pueden ser un poco más complicadas, pero si usas un sistema operativo de verdad la instalación y puesta en marcha de docker es trivial e inmediata (ya lo he tratado antes en el blog). Voy a dar por hecho que ya tienes un proyecto Java a ejecutar con tomcat (si es con maven o gradle que te generen el .war automáticamente, mejor) y que ya tienes docker instalado en tu equipo (y docker-compose). Lo que sigue es lo que tienes que hacer para probar tu war en un tomcat con una versión determinada que use una base de datos de una versión determinada:

Crea un directorio docker al mismo nivel que tienes el pom.xml si usas maven y dentro de ese directorio crea el archivo docker-compose.yml

version: "3"
services:

  tomcat:
    container_name: miproyecto-tomcat
    image: tomcat:8-jdk8
    ports:
      - 8080:8080
    volumes:
      - ../target/miproyecto.war:/usr/local/tomcat/webapps/miproyecto.war
      - ../target/miproyecto:/usr/local/tomcat/webapps/miproyecto
    links:
      - "mysql:db"

  mysql:
    container_name: miproyecto-mysql
    image: mysql:8.0
    environment:
       MYSQL_ROOT_PASSWORD: "mipassword"
    volumes:
      - ../mysql:/var/lib/mysql
    ports:
      - "3306:3306"
    restart: unless-stopped

En el directorio del pom.xml ejecuta lo siguiente:

mvn package

Esto te genera el war dentro de target y ya estarás en disposición de entrar dentro del directorio docker y ejecutar:

docker-compose up -d

Quiá la primera vez podrías querer ejecutarlo sin la opción -d para ver todo el log que sale (también es cierto que la primera vez se descarga todos los contenedores y tardará un poco). A partir de que haya arrancado podemos acceder a la aplicación en:

http://localhost:8080/miproyecto

También se puede acceder a la base de datos directamente:

mysql -h 127.0.0.1 -u root -p

Y yasta… En próximas entradas veremos como depurar con docker también.

Feliz año nuevo

Una entrada corta, muy corta, para desearos un feliz año 2020… Sea que empecemos los felices años veinte (aunque en el siglo pasado tampoco es que fuesen demasiado felices tampoco) o sea que tengamos que esperar al año que viene para iniciar una nueva década como dice la RAE.

¿Qué espero yo de este nuevo año?

  • Tener, por fin, un proyecto con cierta aceptación (mola tener idéas geniales, pero no mola que nadie te las compre).
  • Dedicarle tiempo al cuidado de la salud, que ya empezamos a tener una edad y no todo va a ser trabajo
  • Recuperar contacto con la famila que, al fin y al cabo, es todo lo que tienes en propiedad para siempre y hay que cuidarlo de vez en cuando.
  • Y, para todo lo demás… No tener más preocupaciones ni miedos que los que ya he tenido, con eso me doy por satisfecho.

Y mis propósitos son…

  • Cabrearme menos (si eso es posible), tendré que empezar a contar hasta 10000 antes de contestar airadamente.
  • Planificar un poco más lo que hago… Que si, que lleva tiempo, pero vale la pena.
  • Buscar gente mejor que yo en todo, colaborar, contratar o aprender de ellas (se acabó el ombliguismo).
  • Perder menos el tiempo con chorradas (esto ya es más complicado, porque mi definición de chorrada es muy esotérica).

En fin… Veremos a ver qué nos depara este año…

Negacionistas

Supongamos que Guillermo es una persona normal, con una carrera técnica en la que sabe un montón de lo suyo y muy poco de lo demás, obviamente no es médico ni nada similar. Un día, en base a unas molestias se pasa por el médico y después de hacerle unas pruebas le diagnostica un cancer.

Guillermo, no contento con el diagnóstico y acojonado como no podía ser de otra manera, decide visitar a otros médicos, solicitar otras opiniones a conocidos oncólogos y todos coinciden en el diagnóstico, cancer. Por suerte es tratable y solo se le pide que empiece el tratamiento cuanto antes.

Pero algo no le cuadra a Guillermo, decide que lo que los médicos han estudiado y a los pacientes que han tratado no son sinónimo de que tengan la razón, intenta documentarse y visita internet con asiduidad, por desgracia el 99% de lo que encuentra le confirma el diagnóstico y el tratamiento. Para el sería una jodienda tener que someterse al tratamiento y decide elegir al 1% que le dice que los médicos están todos compichados con las farmacéuticas para vender carísimos tratamientos contra el cancer y que, en realidad, sus síntomas se curan con agua diluida en principios mágicos…

Guillermo ha decidido que la ciencia médica ya no le sirve, que él y los cuatro iluminados de internet son más listos y ven la verdad más allá de las tramposas multinacionales de las medicinas. Así que se niega a recibir el tratamiento y decide esperar a que el cancer se cure solo con ayuda de medicinas neanthertales. No le ablanda la preocupación de su familia y amigos, él es más listo y nadie ha sabido argumentarle la forma en que las células sanas mutan en cancerígenas de una manera convincente (nada de estudios con cifras, ni causalidadades de esas que se inventan las farmaceúticas)..

Guillermo es feliz sabiendo que él es más listo que los borregos que le rodean aunque sospechosamente su grupo de afectados por la conspiración global de los falsos diagnósticos de cancer va perdiendo miembros a marchas aceleradas, aunque cada día hay nuevos miembros y él activamente evangeliza a todo el que conoce para que evite seguir el tratamiento…

Guillermo muere entre terribles dolores tras un periodo espantoso donde ha perdido el control de sus funciones motoras poco a poco. ¿FIN?

negar

La historia de Guillermo no es ficción, ahora mismo tenemos negacionistas de cualquier cosa que niegan la evidencia y la autoridad de los científicos para casi todo lo que nos ha convertido en una civilización avanzada. No es ya tener una opinión diferente, eso es muy loable, es pensar que su opinión tiene el mismo peso que décadas o cientos de años de estudios e investigaciones y todo se resume en un «Creo que la tierra es plana ¿puedes hacerme cambiar de opinión?»

Merecemos la extinción, pero ya!

Hay algunos que ya se dan cuenta…

Me han hackeado el Spotify!

Bueno, realmente a mi no, ha sido a mi hija, ¿pero qué leche? si lo estoy pagando yo también es mío, ¿no?… Como soy un poco vago os reproduzco el hilo de twitter que mandé ayer para que os hagáis una idea:

Ejemplo práctico, de ahora mismo, de porqué es tan malo poner la misma contraseña en sitios distintos… Dentro hilo..

Esta mañana mi hija me ha mandado un whatsapp diciendo que alguien estaba cambiando la música de su spotify y que no podía oir nada de lo que ella ponía… raro.

Al rato me manda pantallazo del correo que ha recibido

Eso ya es indicio claro de que alguien ha entrado en su cuenta y ha cambiado el correo y, obviamente, la contraseña… En este momento estamos pagando el servicio a una persona que no conocemos.

Y que tiene unos gustos musicales pésimos además.

Después de momentos de desconcierto acertamos a dar con el chat de soporte de spotify que, tras pedirnos copia de los justificantes de pago y alguna cosilla más nos devuelve la cuenta. Bien por @SpotifySpain

Para saber lo que ha pasado, le pregunto si usaba la misma contraseña en otros sitios, me dice que si, compruebo en https://haveibeenpwned.com si su email estaba comprometido y… bingo.

Había otros cuatro sitios en internet donde se registro con la misma contraseña que habían sido comprometidos y, probablemente, de uno de ellos haya salido la contraseña que han usado.

Remedio inmediato: usar @nomorepass_ para generar nuevas contraseñas diferentes y cambiarlas en todas partes.

Por eso, amiguitos, nunca debéis usar la misma contraseña (ni ninguna variación simplona de la misma) en ningún sitio… Y, por supuesto, como no vas a poder recordar las contraseñas, usa nomorepass