docker build
This commit is contained in:
parent
5a45eca301
commit
6366fc631e
6 changed files with 178 additions and 3 deletions
24
docker/Dockerfile.in
Normal file
24
docker/Dockerfile.in
Normal 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
60
docker/Makefile.in
Normal 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
80
docker/README
Normal 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
9
docker/start.sh
Executable 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
|
||||
Loading…
Add table
Add a link
Reference in a new issue