You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@brooklyn.apache.org by Geoff Macartney <ge...@gmail.com> on 2018/12/31 18:51:44 UTC

Re: Build depends on Docker - and Happy New Year :-)

Hi all,

After a hiatus for Christmas I've updated the PR for the above
https://github.com/apache/brooklyn-dist/pull/136 to take account of
Richard's comment about having a separate directory.

And while I'm here I'll just wish you all a very Happy New Year! All the
best for 2019.

Geoff



On Tue, 18 Dec 2018 at 15:29 Richard Downer <ri...@apache.org> wrote:

> Yes I think I'd definitely prefer this. The new UI has brought in lots of
> new build prerequisites so there's actually quite a lot you need to do to
> get a Brooklyn build today. Since all these extra build packages require
> special tooling, and are going to be unused by most people, I'm happy for
> them to be opt-in.
>
> On Mon, 17 Dec 2018 at 11:49, Geoff Macartney <ge...@gmail.com>
> wrote:
>
> > I guess we don't *have* to be consistent, or rather we can consistently
> > stick to the principle of making life as easy as possible for users. But
> I
> > do like the thought of people being able to build and try Brooklyn with
> as
> > few hoops to jump through as possible, so:
> >
> > I would certainly stick with opt-in for things that are convenience
> > features but not part of Brooklyn (e.g. Docker image).
> > RPM/DEB is normally going to be needed by us when doing releases, so
> > probably handiest to opt-in
> > Go installation is easy enough but is still a whole extra step for people
> > to set up, so, hmm, maybe I'd opt-in for that too!
> >
> > Then we can change our Build Basics instructions
> > https://brooklyn.apache.org/v/latest/dev/env/maven-build.html to
> something
> > like
> >
> >     To build the Brooklyn server just requires the following software to
> be
> > installed:
> >
> >     Maven (v3.1+)
> >     Java (v1.7+, 1.8 recommended)
> >
> >     With these in place, you should be able to build with a:
> >     mvn clean install
> >
> >     To build all of Brooklyn including the "br" command line client and
> > RPM/DEB packages, and additionally to build a convenient Docker image,
> you
> > will also need
> >
> >     Go (v1.6+)
> >     rpm/deb tools
> >     Docker
> >
> >     With these in place, you can build including all of these features
> > with:
> >     mvn clean install -Dgo-client -Drpm -Ddeb -Ddocker
> >
> >
> > I think I quite like that.
> >
> > Geoff
> >
> >
> >
> > On Mon, 17 Dec 2018 at 10:09 Thomas Bouron <th...@cloudsoft.io>
> > wrote:
> >
> > > Hi Geoff.
> > >
> > > The PR looks good but creates an inconsistency between the binaries:
> > > RPM/DEB and Go client are all opt-out whereas the docker build is
> opt-in.
> > > Whatever route we go, I think we should be consistent across the board.
> > >
> > > Since people seems ok with an opt-in solution for the different
> > binaries, I
> > > would be happy to follow the majority.
> > >
> > > Best.
> > >
> > > On Sun, 16 Dec 2018 at 22:51 Geoff Macartney <
> geoff.macartney@gmail.com>
> > > wrote:
> > >
> > > > Have raised https://github.com/apache/brooklyn-dist/pull/136, let me
> > > know
> > > > what you think
> > > >
> > > > G
> > > >
> > > > On Sat, 15 Dec 2018 at 17:34 Paul Campbell <
> paul.campbell@cloudsoft.io
> > >
> > > > wrote:
> > > >
> > > > > +1 to only build docker image when profile is activated
> > > > >
> > > > > On Sat, 15 Dec 2018, 16:34 Geoff Macartney <
> > geoff.macartney@gmail.com
> > > > > wrote:
> > > > >
> > > > > > I'll go out on a limb here and suggest we disable it by default -
> > > let's
> > > > > go
> > > > > > with Alex's suggestion of a profile to build the image, with the
> > > > default
> > > > > > build being NOT to build with that profile, so you would have to
> do
> > > > > > something like
> > > > > >
> > > > > > mvn clean install  -DdockerImage
> > > > > >
> > > > > > to build the image.
> > > > > >
> > > > > > any +1s?
> > > > > >
> > > > > >
> > > > > > On Sat, 15 Dec 2018 at 10:33 Thomas Bouron <
> > > thomas.bouron@cloudsoft.io
> > > > >
> > > > > > wrote:
> > > > > >
> > > > > > > Hi Geoff, all.
> > > > > > >
> > > > > > > To recap what this is doing: it builds a docker image that
> > launches
> > > > > > > Brooklyn. It actually wraps the RPM that maven builds, and
> > packages
> > > > > that
> > > > > > as
> > > > > > > a Docker image.
> > > > > > > Now, I merged this and when testing, I noticed[1] that the
> plugin
> > > > used
> > > > > to
> > > > > > > build the docker image can be disabled with one of their own
> > > flag[2],
> > > > > > > namely `-DskipDocker`. This is why I didn't ask the contributor
> > > for a
> > > > > > maven
> > > > > > > profile.
> > > > > > >
> > > > > > > If you think that is not enough, we could definitely disable
> this
> > > by
> > > > > > > default. But I think this is useful, and a much easier way for
> > new
> > > > > people
> > > > > > > to get started with Brooklyn (instead of vagrant).
> > > > > > >
> > > > > > > Best.
> > > > > > >
> > > > > > > [1]
> > > > > > >
> > > > >
> > >
> https://github.com/apache/brooklyn-dist/pull/118#issuecomment-435649038
> > > > > > > [2]
> > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> https://github.com/spotify/docker-maven-plugin#bind-docker-commands-to-maven-phases
> > > > > > >
> > > > > > > On Sat, 15 Dec 2018 at 08:55 Alex Heneveld <
> > > > > > > alex.heneveld@cloudsoftcorp.com>
> > > > > > > wrote:
> > > > > > >
> > > > > > > > It should have a mvn profile like rpm and the go cli IMO. The
> > > > README
> > > > > in
> > > > > > > the
> > > > > > > > master project describes these.
> > > > > > > >
> > > > > > > > Best
> > > > > > > > Alex
> > > > > > > >
> > > > > > > > On Fri, 14 Dec 2018, 22:51 Geoff Macartney <
> > > > > geoff.macartney@gmail.com
> > > > > > > > wrote:
> > > > > > > >
> > > > > > > > > We added this in
> > > > https://github.com/apache/brooklyn-dist/pull/118,
> > > > > > > but I
> > > > > > > > > do
> > > > > > > > > dislike having to have Docker to build Brooklyn.  IMHO
> anyone
> > > > > should
> > > > > > be
> > > > > > > > > able to build and use Brooklyn without knowing anything
> about
> > > > > Docker.
> > > > > > > > Could
> > > > > > > > > we remove the image build from the mvn install and have a
> > > > separate
> > > > > > > shell
> > > > > > > > > script that you would run manually to build the image? And
> > yes
> > > it
> > > > > > > should
> > > > > > > > > use the karaf distro, didn't realise it doesn't.
> > > > > > > > >
> > > > > > > > > Geoff
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > On Wed, 12 Dec 2018 at 16:58 Richard Downer <
> > > richard@apache.org>
> > > > > > > wrote:
> > > > > > > > >
> > > > > > > > > > All,
> > > > > > > > > >
> > > > > > > > > > The Apache Brooklyn build depends on having a working
> > Docker
> > > > > > > instance.
> > > > > > > > > This
> > > > > > > > > > I did not know.
> > > > > > > > > >
> > > > > > > > > > The build failure happens in the `brooklyn-dist` project,
> > > which
> > > > > > > > > > incorporates into execution `dockerfile-maven-plugin`
> which
> > > > > invokes
> > > > > > > > > Docker
> > > > > > > > > > during the build phase. If Docker is not running, it
> tries
> > to
> > > > > > connect
> > > > > > > > to
> > > > > > > > > a
> > > > > > > > > > non-existent UNIX socket and the build fails.
> > > > > > > > > >
> > > > > > > > > > This presents a few discussion points...
> > > > > > > > > >
> > > > > > > > > > What exactly is it building? There's a Dockerfile there
> and
> > > it
> > > > > > seems
> > > > > > > > that
> > > > > > > > > > it builds an image which contains the Brooklyn
> distribution
> > > and
> > > > > > > starts
> > > > > > > > > > Brooklyn. I don't know much about Docker, what happens to
> > > that
> > > > > > image?
> > > > > > > > Is
> > > > > > > > > it
> > > > > > > > > > local to my computer?
> > > > > > > > > >
> > > > > > > > > > Is it necessary to have the build depend on Docker? To me
> > > this
> > > > > > seems
> > > > > > > > > > unreasonable. Docker has a large footprint and I don't
> > think
> > > > it's
> > > > > > > > > > reasonable to require it for a normal, local build of
> > > Brooklyn.
> > > > > > > > > >
> > > > > > > > > > We're not releasing Docker images. Should we be? Should
> we
> > > not
> > > > > be?
> > > > > > Is
> > > > > > > > it
> > > > > > > > > > even possible for us to do that in Apache?
> > > > > > > > > >
> > > > > > > > > > Why haven't I seen this before? The changes to add this
> to
> > > > > > > > brooklyn-dist
> > > > > > > > > > were made in 2017. I've performed release builds on clean
> > EC2
> > > > > > > instances
> > > > > > > > > and
> > > > > > > > > > never seen this. Was this dormant, and has something
> > changed
> > > > > which
> > > > > > > has
> > > > > > > > > > kicked this into life?
> > > > > > > > > >
> > > > > > > > > > brooklyn-dist is obsolete now. If the Docker build is
> still
> > > > > > something
> > > > > > > > > > important, then firstly it needs moved to another project
> > > > > > (hopefully
> > > > > > > > one
> > > > > > > > > > exclusive to that task) and secondly it needs to use the
> > > Karaf
> > > > > > > > > > distribution.
> > > > > > > > > >
> > > > > > > > > > Can anyone shed some light on this?
> > > > > > > > > >
> > > > > > > > > > Thanks!
> > > > > > > > > >
> > > > > > > > > > Richard.
> > > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > > --
> > > > > > > Thomas Bouron
> > > > > > > Senior Software Engineer
> > > > > > >
> > > > > > > *Cloudsoft <https://cloudsoft.io/> *| Bringing Business to the
> > > Cloud
> > > > > > >
> > > > > > > GitHub: https://github.com/tbouron
> > > > > > > Twitter: https://twitter.com/eltibouron
> > > > > > >
> > > > > > > Need a hand with AWS? Get a Free Consultation.
> > > > > > >
> > > > > >
> > > > >
> > > >
> > > --
> > > Thomas Bouron
> > > Senior Software Engineer
> > >
> > > *Cloudsoft <https://cloudsoft.io/> *| Bringing Business to the Cloud
> > >
> > > GitHub: https://github.com/tbouron
> > > Twitter: https://twitter.com/eltibouron
> > >
> > > Need a hand with AWS? Get a Free Consultation.
> > >
> >
>