erlang / docker-erlang-otp

the Official Erlang OTP image on Docker Hub
https://hub.docker.com/_/erlang/
Apache License 2.0
183 stars 80 forks source link

Update to alpine 3.11 breaks downstream builds #267

Closed juulSme closed 4 years ago

juulSme commented 4 years ago

See https://github.com/c0b/docker-elixir/issues/131

tldr; phoenix with brunch with sass uses brunch-sass, which uses node-sass, which doesn't support nodejs 12 apparently, so it doesn't support alpine 3.11 (yet) because alpine 3.11 only has nodejs 12 in the apk package repo

It seems to me that updating the base image to alpine:3.11 this shortly after the 3.11 release (12 December) is overly aggressive. When looking at https://wiki.alpinelinux.org/wiki/Alpine_Linux:Releases it seems that alpine 3.10 is still supported until May 2021, so it seems there is no reason for this update at this moment. It would seem prudent for an image like erlang:22, which has so many dependent images, to take a slightly more conservative approach.

getong commented 4 years ago

https://www.npmjs.com/package/node-sass

Node 12 | 4.12+ | 72

It seems that, the node-sass can be installed in the alpine 3.11.

juulSme commented 4 years ago

In theory yes. And perhaps with newer node-sass it works. But brunch-sass depends on a slightly older node-sass version (4.9.4). To reproduce:

docker pull erlang:22-alpine
# don't skip the previous step, it only fails with latest image that is based on alpine:3.11
docker run --rm erlang:22-alpine /bin/sh -c "apk add --update nodejs npm && npm install sass-brunch"

Anyway, that is besides the point. By upgrading to a newer base image this quickly, especially an alpine-based image with its non-standard C compiler that makes separate builds necessary, things are bound to break because not all packages are this quick in updating their deployed artifacts. Of course brunch-sass should be kept up-to-date, but the package is actually actively maintained, just not this actively. Our apps depend on the very latest brunch-sass, and still had the rug pulled out from under them by the alpine:3.11 bump in erlang alpine image. Is there a reason for the aggressive update strategy that necessitates it?

getong commented 4 years ago

Currently no strategy for the updating process. And you are right, the sass-brunch master branch can be installed:

apk add --update nodejs npm make g++ python git
npm install https://github.com/brunch/sass-brunch

It is not the fault of the alpine:3.11 . By using the master branch, you can close this issue.

juulSme commented 4 years ago

Thank you, that is a good tip, we have solved the issue for now by using a specific git commit as our dependency, i.e. "sass-brunch": "https://github.com/brunch/sass-brunch.git#b21b27f6329c2ec30659daa0835db214dde708b0". I still think, however, that you should wait for half a year after an alpine release before switching base image. I defer to your wisdom however. Keep up the good work