docker build

This commit is contained in:
Olof hagsand 2016-02-26 16:47:31 +01:00
parent 5a45eca301
commit 6366fc631e
6 changed files with 178 additions and 3 deletions

24
docker/Dockerfile.in Normal file
View file

@ -0,0 +1,24 @@
FROM ubuntu:14.04
# 12.04
MAINTAINER Olof Hagsand <olof@hagsand.se>
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update && apt-get install -y \
libqdbm-dev \
curl
COPY libcligen.so.@CLIGEN_VERSION@ /usr/lib/
COPY libclicon.so.@CLICON_VERSION_MAJOR@ /usr/lib/
COPY libclicon_cli.so.@CLIGEN_VERSION@ /usr/lib/
COPY clicon_cli /usr/bin/
COPY nullfile /usr/local/var/clicon_yang/
COPY start.sh /usr/bin/
RUN ldconfig
#CMD ["clicon_cli", "-c", "-f", "/usr/local/etc/clicon_yang.conf"]
CMD ["start.sh"]
EXPOSE 7878 7878/udp

60
docker/Makefile.in Normal file
View file

@ -0,0 +1,60 @@
#
# Copyright (C) 2009-2016 Olof Hagsand and Benny Holmgren
#
# This file is part of CLIXON.
#
# CLIXON is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# CLIXON is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with CLIXON; see the file LICENSE. If not, see
# <http://www.gnu.org/licenses/>.
#
VPATH = @srcdir@
prefix = @prefix@
exec_prefix = @exec_prefix@
srcdir = @srcdir@
top_srcdir = @top_srcdir@
prefix = @prefix@
bindir = @bindir@
sbindir = @sbindir@
libdir = @libdir@
includedir = @includedir@
datarootdir = @datarootdir@
all:
@echo "Run make docker to build docker image"
clean:
distclean: clean
rm -f Makefile *~ .depend libcli* clicon_cli clicon_backend Dockerfile
# Kind of reverse install, could have copied from src dir,...
.PHONY: docker
docker:
cp $(DESTDIR)$(libdir)/libcligen.so.@CLIGEN_VERSION@ .
cp $(DESTDIR)$(libdir)/libclicon.so.@CLICON_VERSION_MAJOR@ .
cp $(DESTDIR)$(libdir)/libclicon_cli.so.@CLICON_VERSION_MAJOR@ .
cp $(DESTDIR)$(libdir)/libclicon_backend.so.@CLICON_VERSION_MAJOR@ .
cp $(DESTDIR)$(bindir)/clicon_cli .
cp $(DESTDIR)$(sbindir)/clicon_backend .
touch nullfile
install:
uninstall:
install-include:
depend:
# $(CC) $(DEPENDFLAGS) $(INCLUDES) $(CFLAGS) -MM $(SRC) > .depend
#include .depend

80
docker/README Normal file
View file

@ -0,0 +1,80 @@
You can skip directly to (3)
1. Building it yourself
+++++++++++++++++++++++
Ensure that cligen and clicon has been built and installed.
make docker
2. Building a docker and publishing it
++++++++++++++++++++++++++++++++++++++
This example pushes it to my (Olof Hagsand)s docker hub repository
sudo docker build --no-cache=true -t olofhagsand/clicon_cli:v1.0 .
sudo docker push olofhagsand/clicon_yang
3. From docker
++++++++++++++
The easiest is just to run it from docker hub:
> sudo docker run -i -t -P olofhagsand/clicon_yang:v1.0
Either just try out the default yang specification or try out your own.
3.1 Enter your own spec
-----------------------
$ sudo docker run -i -t -P olofhagsand/clicon_yang:v1.0
input yang spec(end with ^d). Or just ^d for default spec>
container hello{
leaf world{
type string; }
}
^d
clicon_yang> hello world !
clicon_yang> show
hello {
world !;
}
clicon_yang>
3.2 Run the default
-------------------
> sudo docker run -i -t -P olofhagsand/clicon_yang:v1.0
input yang spec(end with ^d). Or just ^d for default spec> ^d
clicon_yang> a 43 b y 88
clicon_yang> a 43 c z 12
clicon_yang> show
a {
x 43;
b {
y 88;
}
c {
z 12;
}
}
3.3 Show options
----------------
There are several show commands where you can display your
specification as CLI, JSON or XML. You can also display the YANG specification.
clicon_yang> show cli
hello world !
clicon_yang> show json
{
"hello": {
"world": "!"
}
}
clicon_yang> show xml
<hello>
<world>!</world>
</hello>
clicon_yang> show yang
container hello {
leaf world {
type string;
}
}

9
docker/start.sh Executable file
View file

@ -0,0 +1,9 @@
#!/bin/bash
# Script reads yang spec from stdin then start clicon_cli
read -d $'\cd' -p "input yang spec(end with ^d). Or just ^d for default spec> " spec
if [ "$spec" != "" ]; then
echo "module datamodel{" > /usr/local/share/clicon_yang/yang/clicon_yang.yang
echo $spec >> /usr/local/share/clicon_yang/yang/clicon_yang.yang
echo "}" >> /usr/local/share/clicon_yang/yang/clicon_yang.yang
fi
clicon_cli -cf /usr/local/etc/clicon_yang.conf