Modificando Un Servicio en Docker

Nacho - - Tiempo de lectura 2 mins

Mi hija grande está leyendo los libros de los gatos guerreros. Es una colección de varias sagas escritas por un grupo de autoras bajo el nombre Erin Hunter.. No tengo ni idea si están buenos o no, pero ella y su mejor amiga juran que sí. El problema es que son varias series, cada una de seis libros, y cuando los bajás de Calibre Web el nombre del archivo sólo incluye título y autor, sin información de la serie.

Así que hice lo obvio: un pull request. El tema es que eso no me soluciona el problema inmediato, sólo eventualmente. Por ahora, quiero tener esto corriendo. Y no quiero generar mi propia imagen de Docker desde cero. Así que tengo que modificar una existente,

El parche

Para generar el parche es correr:

1
git format-patch -1 HEAD

HEAD es la referencia al branch desde donde querés generar parches. -1 le dice a git que genere un sólo patch.

Eso te va a generar un archivo con un nombre basado en el commit.

docker-compose

Hay que modificar el docker-compose.yml para que, en lugar de usar la imagen que estaba usando, use una local:

1
2
3
4
5
6
7
  calibre-web:
    image: local/calibre-web
    build:
      context: calibre-web
      dockerfile: Dockerfile
    #image: linuxserver/calibre-web
    container_name: calibre-web

Dockerfile

Y luego crear el Dockerfile en el directorio calibre-web

1
2
3
4
5
6
7
FROM linuxserver/calibre-web

COPY ./patches /root/patches

RUN apt-get update && apt-get install patch
WORKDIR /app/calibre-web/
RUN patch -p1 < /root/patches/0001-Add-an-option-to-add-series-info-in-download-file-na.patch

En resumen, agarro la imagen que quiero usar, le agrego el patch, y lo aplico. Para aplicarlo, como la imagen no tiene git, uso patch. Que tampoco está, pero prefiero instalar patch a git si lo único que voy a hacer es parchear.

Y listo, ya tengo calibre web con nombres de archivos con la serie.


Este blog no tiene comentarios. Pero si querés charlar sobre cualquier post, podés mandarme un email o escribirme por Mastodon.