rebar3 compile dependencies separated from project code

Tristan Sloughter t@REDACTED
Tue Nov 26 22:26:47 CET 2019


Yes, only copy the rebar.config and rebar.lock files and rebar3 compile will do the right thing.

You might find https://adoptingerlang.org/docs/production/docker/ useful. It goes beyond this form of layer caching to what is now possible with the latest versions of docker, including things like caching the hex packages outside of a layer so they don't get redownloaded after a cache bust.

Tristan

On Sat, Nov 23, 2019, at 03:04, rtp wrote:
> Found a solution just now :-D
> 
> Just copy only the rebar.conf-file in a first step and compile it (I
> didn't expect to work ... but it does) :
> 
>    FROM erlang:22
> 
>    WORKDIR /BUILD/
> 
>    # get deps in a first step - to use cache in next build ;-)
> 
>    COPY erlang/aw/rebar.config .
>    RUN rebar3 compile
> 
>    # now get whole code
> 
>    COPY erlang/aw/ .
>    RUN rebar3 as prod tar
> 
> 
> Perhaps it helps someone :-)
> 
> Cheerio
> 
> Ralf
> 
> 
> On 23.11.19 10:47, rtp wrote:
> > Hi,
> >
> > I'm build up a docker pipeline for a erlang project.  Currently I build
> > the whole project in a new erlang-Docker-Container by a
> >
> > 	rebar3 as prod tar
> >
> > This task downloads and compiles the dependencies every time I build;
> > because the erlang-container is plain and empty.
> >
> > I can now call a
> >
> > 	rebar3 get-deps
> >
> > in a previous container (or step) to get rid of the downloads.
> >
> > But I want to get a step further an compile the dependencies before
> > building the application, to compile only the app-code and to make the
> > build faster.
> >
> > Does anybody know how to compile dependencies separated from app-code ?
> >
> > I can't find anything.  Perhaps there's a plugin I don't know!?
> >
> >
> > Thanks a lot
> >
> > Ralf
> >
>



More information about the erlang-questions mailing list