Alpine Linux 3.7+
=========================================================

For building Alpine Linux dev packages, we use docker.

Install docker 17.05 or later
-----------------------------

Depending on your host, there are different ways of installing docker.  Refer
to the documentation here for instructions on how to install a free version of
docker: https://www.docker.com/community-edition

Pre-built packages and docker images
------------------------------------

The master branch of https://github.com/frrouting/frr.git has a
continuous delivery of docker images to docker hub at:
https://hub.docker.com/r/ajones17/frr/. These images have the frr packages
in /pkgs/apk and have the frr package pre-installed.  To copy Alpine
packages out of these images:

::

   id=`docker create ajones17/frr:latest`
   docker cp ${id}:/pkgs _some_directory_
   docker rm $id

To run the frr daemons (see below for how to configure them):

::

   docker run -it --rm --name frr ajones17/frr:latest
   docker exec -it frr /bin/sh

Work with sources
-----------------

::

   git clone https://github.com/frrouting/frr.git frr
   cd frr

Build apk packages
------------------

::

   ./docker/alpine/build.sh

This will put the apk packages in:

::

   ./docker/pkgs/apk/x86_64/

Usage
-----

To create a base image with the frr packages installed:

::

   docker build --rm -f docker/alpine/Dockerfile -t frr:latest .

Or, if you don't have a git checkout of the sources, you can build a base
image directly off the github account:

::

   docker build --rm -f docker/alpine/Dockerfile -t frr:latest \
	https://github.com/frrouting/frr.git

And to run the image:

::

   docker run -it --rm --name frr frr:latest

In the default configuration, none of the frr daemons will  be running.
To configure the daemons, exec into the container and edit the configuration
files or mount a volume with configuration files into the container on
startup.  To configure by hand:

::

   docker exec -it frr /bin/sh
   vi /etc/frr/daemons
   cp /etc/frr/zebra.conf.sample /etc/frr/zebra.conf
   vi /etc/frr/zebra.conf
   /etc/init.d/frr start

Or, to configure the daemons using /etc/frr from a host volume, put the
config files in, say, ./docker/etc and bind mount that into the
container:

::

   docker run -it --rm -v `pwd`/docker/etc:/etc/frr frr:latest

We can also build the base image directly from docker-compose, with a
docker-compose.yml file like this one:

::

   version: '2.2'

   services:
      frr:
         build:
            context: https://github.com/frrouting/frr.git
            dockerfile: docker/alpine/Dockerfile
