docker support
This commit is contained in:
parent
6366fc631e
commit
eb93d82caa
18 changed files with 370 additions and 125 deletions
|
|
@ -18,43 +18,53 @@
|
|||
# <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@
|
||||
CC = @CC@
|
||||
CFLAGS = @CFLAGS@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBS = @LIBS@
|
||||
|
||||
all:
|
||||
@echo "Run make docker to build docker image"
|
||||
clean:
|
||||
SHELL = /bin/sh
|
||||
|
||||
distclean: clean
|
||||
rm -f Makefile *~ .depend libcli* clicon_cli clicon_backend Dockerfile
|
||||
SUBDIRS = cli backend
|
||||
|
||||
# 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
|
||||
.PHONY: all clean depend install $(SUBDIRS) docker push
|
||||
|
||||
install:
|
||||
|
||||
uninstall:
|
||||
|
||||
install-include:
|
||||
all: $(SUBDIRS)
|
||||
|
||||
depend:
|
||||
# $(CC) $(DEPENDFLAGS) $(INCLUDES) $(CFLAGS) -MM $(SRC) > .depend
|
||||
for i in $(SUBDIRS); \
|
||||
do (cd $$i; $(MAKE) $(MFLAGS) $@); done
|
||||
|
||||
#include .depend
|
||||
$(SUBDIRS):
|
||||
(cd $@; $(MAKE) $(MFLAGS) all)
|
||||
|
||||
install-include:
|
||||
for i in $(SUBDIRS); \
|
||||
do (cd $$i ; $(MAKE) $(MFLAGS) $@); done;
|
||||
|
||||
install:
|
||||
for i in $(SUBDIRS); \
|
||||
do (cd $$i; $(MAKE) $(MFLAGS) $@); done
|
||||
|
||||
uninstall:
|
||||
for i in $(SUBDIRS); \
|
||||
do (cd $$i; $(MAKE) $(MFLAGS) $@); done
|
||||
|
||||
clean:
|
||||
for i in $(SUBDIRS); \
|
||||
do (cd $$i; $(MAKE) $(MFLAGS) $@); done
|
||||
|
||||
distclean: clean
|
||||
rm -f Makefile *~ .depend
|
||||
for i in $(SUBDIRS); \
|
||||
do (cd $$i; $(MAKE) $(MFLAGS) $@); done
|
||||
|
||||
docker:
|
||||
for i in $(SUBDIRS); \
|
||||
do (cd $$i && $(MAKE) $(MFLAGS) $@); done
|
||||
|
||||
push:
|
||||
for i in $(SUBDIRS); \
|
||||
do (cd $$i && $(MAKE) $(MFLAGS) $@); done
|
||||
|
|
|
|||
|
|
@ -1,80 +1,6 @@
|
|||
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;
|
||||
}
|
||||
}
|
||||
|
||||
This dir contains docker code - how to build clixon as docker containers
|
||||
cli Build olofhagsand/clicon_cli container
|
||||
backend Build olofhagsand/clicon_backend container
|
||||
|
||||
You may run the container directly by going directly to example and
|
||||
the docker runtime scripts there
|
||||
20
docker/backend/Dockerfile.in
Normal file
20
docker/backend/Dockerfile.in
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
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
|
||||
COPY libcligen.so.@CLIGEN_VERSION@ /usr/lib/
|
||||
COPY libclicon.so.@CLICON_VERSION_MAJOR@ /usr/lib/
|
||||
COPY libclicon_backend.so.@CLICON_VERSION_MAJOR@ /usr/lib/
|
||||
COPY clicon_backend /usr/sbin/
|
||||
RUN ldconfig
|
||||
RUN sudo groupadd clicon
|
||||
CMD ["/usr/sbin/clicon_backend", "-D", "1", "-F", "-f", "/data/clicon.conf"]
|
||||
|
||||
EXPOSE 7878 7878/udp
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
63
docker/backend/Makefile.in
Normal file
63
docker/backend/Makefile.in
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
#
|
||||
# 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@
|
||||
image = olofhagsand/clicon_backend:v1.0
|
||||
|
||||
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 push
|
||||
docker:
|
||||
cp $(DESTDIR)$(libdir)/libcligen.so.@CLIGEN_VERSION@ .
|
||||
cp $(DESTDIR)$(libdir)/libclicon.so.@CLICON_VERSION_MAJOR@ .
|
||||
cp $(DESTDIR)$(libdir)/libclicon_backend.so.@CLICON_VERSION_MAJOR@ .
|
||||
cp $(DESTDIR)$(sbindir)/clicon_backend .
|
||||
sudo docker build -t $(image) .
|
||||
|
||||
push:
|
||||
docker push $(image)
|
||||
|
||||
|
||||
install:
|
||||
|
||||
uninstall:
|
||||
|
||||
install-include:
|
||||
|
||||
depend:
|
||||
# $(CC) $(DEPENDFLAGS) $(INCLUDES) $(CFLAGS) -MM $(SRC) > .depend
|
||||
|
||||
#include .depend
|
||||
|
||||
6
docker/backend/README
Normal file
6
docker/backend/README
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
Ensure that cligen and clicon has been built and installed.
|
||||
sudo make docker
|
||||
make push
|
||||
|
||||
Then go to example and run the example as a docker container
|
||||
|
||||
|
|
@ -2,18 +2,14 @@ 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
|
||||
RUN apt-get update && apt-get install -y libqdbm-dev
|
||||
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"]
|
||||
CMD ["/usr/bin/clicon_cli", "-f", "/data/clicon.conf"]
|
||||
|
||||
|
||||
EXPOSE 7878 7878/udp
|
||||
|
||||
63
docker/cli/Makefile.in
Normal file
63
docker/cli/Makefile.in
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
#
|
||||
# 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@
|
||||
# This is my dockerhub account
|
||||
image = olofhagsand/clicon_cli:v1.0
|
||||
|
||||
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 push
|
||||
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)$(bindir)/clicon_cli .
|
||||
sudo docker build -t $(image) .
|
||||
|
||||
push:
|
||||
sudo docker push $(image)
|
||||
|
||||
install:
|
||||
|
||||
uninstall:
|
||||
|
||||
install-include:
|
||||
|
||||
depend:
|
||||
# $(CC) $(DEPENDFLAGS) $(INCLUDES) $(CFLAGS) -MM $(SRC) > .depend
|
||||
|
||||
#include .depend
|
||||
|
||||
6
docker/cli/README
Normal file
6
docker/cli/README
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
Ensure that cligen and clicon has been built and installed.
|
||||
sudo make docker
|
||||
make push
|
||||
|
||||
Then go to example and run the example as a docker container
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue