Don't think there would be any objections to going smaller with Alpine and
certainly makes a lot of sense, but I believe initial efforts were
problematic and there was a general desire to get a foundation going.  The
biggest issue was needing to navigate cross compilation of a given host to
the Alpine format which was something our processes are not quite up to at
this juncture.  The integrated dev setup in the image avoided having to
tackle this and allowed building of the image on any system where Docker
could run whether natively or via one of the Docker for $OS setups.

Hadn't actually been aware of the multi-stage docker builds before this
thread, but certainly seems like a great application after looking through
the associated PRs and docs and could be a more immediate win for the
particular case above.

We could and should certainly strive to make components pluggable, in this
case logging, to support such cases where things may be problematic given a
target environment.  I don't think I'd be in favor of removing spdlog at
this point but could apply similar approaches used elsewhere in the
codebase to give us a little more configurability to use an alternate
implementation.

Would be in favor of opening up an issue to optimize our Docker build and
certainly target Alpine with some of the new build magic.  By the time we
have it implemented, the multi-stage builds should likely be sufficiently
available.

On Wed, Apr 26, 2017 at 10:19 AM, Andrew Christianson <
andrew.christian...@nextcentury.com> wrote:

> Have we considered porting the current Dockerfile from Ubuntu to Alpine?
> The ubuntu image, especially with all the build-time deps left in the final
> image, is quite bloated. This runs against the design intent of minimal
> footprint in minifi-cpp. Further, the new multi-stage Docker builds would
> allow us to isolate the build environment in its own stage and allow only
> runtime deps to exist in the final image. Overall it would be a much
> smaller image.
>
> Reviewing the JIRA activity for MINIFI-175, it seems the decision to not
> use alpine was originally due to the desire to encapsulate the build of
> minifi inside the build of the docker image, which for some reason wasn't
> compatible with using alpine. On initial testing, it seems alpine's musl
> libc has issues with spdlog. Since it may involve some effort and decision
> making with regard to which dependencies are used, this is a decision
> probably best made by the community.
>
> Thoughts?

Reply via email to