Finalmente el boom de docker llegó a Cuba. En mi caso personal, hace rato lo uso para desplegar aplicaciones de Ruby on Rails y siempre me pareció que debian era la mejor base para hacer una imagen. Si bien, hay containers de rails, eso de usar en producción, con una distro hecha por un cualquiera, como que me da cosa. Hacer una a partir de la oficial, es más sencillo que verificar la integridad de una ya hecha.
AlpineLinux para docker es un batazo, eso es in-negable. Pero instalar rails en alpine, resultó ser más complicado de lo que yo pensaba.
1 2 |
|
Ante todo necesitamos instalar las librerías requeridas para compilar, sobre todo las dependencias de nokogiri. Instalaremos los paquetes: build-base, nodejs, tzdata, libxml2-dev, libxslt-dev, sqlite-dev y claro, ruby
En este caso, usaremos sqlite como ejemplo, pero a ti quizás te cuadre más con mariadb-dev (mysql) o postgresql-dev
1 2 3 4 |
|
Como nokogiri es un caso tan peculiar, le diremos que compile usando las librerías del sistema, para ellos lo instalaremos aparte. Alpine no usa glibc, usa musl-libc y nokogiri NO compila, por tanto, hay que usar las librerías del sistema; en vez de las que provee nokogiri.
1
|
|
Con eso ya tenemos los cimientos echados. Nuestra imagen habrá crecido 200 megas. Ahora vamos instalar rails.
1
|
|
El paso de instalar rails como gema del sistema es cuestionable para una pila de gente; pero ten en cuenta que es la manera de saber si rails funciona, recuerda que esto es un ejemplo. La primera vez me topé con que debía instalar io-console, ya que a pesar de ser dependencia, nadie la requería. Bueno a ver…
1 2 |
|
Tengo una imagen llamada “alpine_ruby” en la que tengo todo lo necesario para instalar y No tengo la gema de rails instalada. Entonces, con cada versión de rails, por ejemplo, derivar de “alpine_ruby” la imagen alpine_rails50 , así cuando salga el rails 5.1 le llamaré alpine_rails51