Add dev image

This commit is contained in:
Tim Evens 2021-03-29 08:52:45 -07:00
parent 762c6359ae
commit 58c7c1a107
7 changed files with 292 additions and 0 deletions

1
.gitignore vendored
View File

@ -1,2 +1,3 @@
.idea
*.log

26
LICENSE Normal file
View File

@ -0,0 +1,26 @@
Copyright 2021 Cisco Systems, Inc.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

45
README.md Normal file
View File

@ -0,0 +1,45 @@
# OpenBMP docker files
Docker files for OpenBMP.
(Prerequisite) Platform Docker Install
--------------------------------------
> Ignore this step if you already have a current docker install
> ####NOTE
> You should use the latest docker version, documented in this section.
Follow the instructions on https://docs.docker.com/get-docker/
### Optionally add a non-root user to run docker as
usermod -aG docker ubuntu
# Logout and log back so the group takes affect.
### Optionally configure **/etc/default/docker** (e.g. for proxy config)
export http_proxy="http://proxy:80/"
export https_proxy="http://proxy:80/"
export no_proxy="127.0.0.1,openbmp.org,/var/run/docker.sock"
Make sure you can run '**docker run hello-world**' successfully.
Install OpenBMP using Docker
----------------------------
Each docker file contains a readme file, see below:
* [Collector](collector/README.md)
* [PostgreSQL](postgres/README.md)
Install OpenBMP using docker-compose
----------------------------
[Docker Compose](https://docs.docker.com/compose/install/) is used to run several containers. It also handles restarting containers on reboot/restart.
```
docker-compose up
```

73
dev-build/Dockerfile Normal file
View File

@ -0,0 +1,73 @@
# Collector: openbmp/collector
#
# Copyright (c) 2013-2021 Cisco Systems, Inc. and others. All rights reserved.
# Copyright (c) 2013-2021 Tim Evens (tim@evensweb.com). All rights reserved.
#
# Author: Tim Evens <tim@openbmp.org>
#
# BUILD: docker build -t openbmp/collector .
# -----------------------------------------------
# stage: Build collector
# -----------------------------------------------
FROM ubuntu:focal AS build
WORKDIR /ws
RUN apt-get update \
&& apt-get install git gcc g++ libboost-dev cmake zlib1g-dev libssl1.1 libsasl2-2 libssl-dev libsasl2-dev
RUN cd /tmp && git clone https://github.com/edenhill/librdkafka.git \
&& cd librdkafka \
&& ./configure \
&& make \
&& make install
&& cd /tmp
RUN git clone https://github.com/jbeder/yaml-cpp.git \
&& cd yaml-cpp \
&& mkdir build && cd build \
&& make \
&& make install
&& cd /tmp
RUN cd /ws && mkdir build && cd build \
&& cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr ../ \
&& make \
&& make install
# -----------------------------------------------
# stage: Final container
# -----------------------------------------------
# Pull base image.
FROM ubuntu:focal
# Proxy/if behind firewall
# Update your /etc/sysconfig/docker or /etc/default/docker file by adding proxy envs there using export <var>=<val>
# Add files.
ADD scripts/install /tmp/
ADD scripts/run /usr/sbin/
ARG BUILD_NUMBER=0
# Proxy servers
#ENV http_proxy http://proxy:80
#ENV https_proxy http://proxy:80
#ENV no_proxy "domain.com"
# Run Install script
RUN /tmp/install
# Define mount points.
VOLUME ["/config"]
# Define working directory.
WORKDIR /tmp
# Define default command.
CMD ["/usr/sbin/run"]
# Expose ports.
# openbmpd/collector
EXPOSE 5000

86
dev-build/README.md Normal file
View File

@ -0,0 +1,86 @@
OpenBMP Collector Container
----------------------------
Collector container is the container for collecting BMP messages from BMP senders, e.g. routers.
This container can be distributed.
#### Container Includes
* **Openbmpd** - Latest collector (listening port is TCP 5000)
### Recommended Current Linux Distributions
1. Ubuntu 14.04/Trusty
1. CentOS 7/RHEL 7
### 1) Install docker
Docker host should be **Linux x86_64**. Follow the [Docker Instructions](https://docs.docker.com/installation/) to install docker.
- - -
### 2) Download the docker image
docker pull openbmp/collector
- - -
### 3) [OPTIONAL] Add persistent configs
#### On host create persistent config location
mkdir -p /var/openbmp/config
chmod 777 /var/openbmp/config
#### config/hosts
You can add custom host entries so that the collector will reverse lookup IP addresses
using a persistent hosts file.
Run docker with ```-v /var/openbmp/config:/config``` to make use of the persistent config files.
#### config/openbmpd.conf
You can provide a customized **openbmpd.conf**. See [Config Example](https://github.com/OpenBMP/openbmp/blob/master/Server/openbmpd.conf)
### 4) Run docker container
#### Environment Variables
Below table lists the environment variables that can be used with ``docker run -e <name=value>``
NAME | Value | Details
:---- | ----- |:-------
KAFKA\_FQDN | hostanme or IP | Kafka broker hostname[:port]. Hostname can be an IP address
OPENBMP\_ADMIN\_ID | name or IP | Name or IP of the collector, default is the docker hostname
OPENBMP\_BUFFER | Size in MB | Defines the openbmpd buffer per router for BMP messages. Default is 16 MB.
#### Run normally
> ##### IMPORTANT
> You must define the **KAFKA_FQDN** as a 'hostname'. If all containers are running on the same node, this
> hostname can be local specific, such as 'localhost' or 'myhost'. If Kafka is running on a different server,
> than the consumers and producers, then the KAFKA_FQDN should be a valid hostname that can be resolved using DNS.
> This can be internal DNS or manually done by updating the /etc/hosts file on each machine.
docker run -d --name=openbmp_collector -e KAFKA_FQDN=localhost \
--sysctl net.ipv4.tcp_keepalive_intvl=30 \
--sysctl net.ipv4.tcp_keepalive_probes=5 \
--sysctl net.ipv4.tcp_keepalive_time=180 \
-v /var/openbmp/config:/config \
-p 5000:5000 \
openbmp/collector
### Monitoring/Troubleshooting
You can use standard docker exec commands to monitor the log files. To monitor
openbmp, use ```docker exec openbmp_collector tail -f /var/log/openbmpd.log```
Alternatively, it can be easier at times to navigate all the log files from within the container. You can do so using:
docker exec -it openbmp_collector bash
#### docker logs
You can use ```docker logs openbmp_collector``` to get the console logs. This is useful if the container exits due to
invalid start or for another reason.

37
dev-image/Dockerfile Normal file
View File

@ -0,0 +1,37 @@
# Development build container: openbmp/dev-image
#
# Copyright (c) 2021 Cisco Systems, Inc. and others. All rights reserved.
# Copyright (c) 2021 Tim Evens. All rights reserved.
#
# Container used to build the OpenBMP components
#
# Author: Tim Evens <tim@openbmp.org>
#
# BUILD: docker build -t openbmp/dev-image .
# docker tag openbmp/dev-image openbmp/dev-image:latest
FROM debian:bullseye-slim AS build
ENV DEBIAN_FRONTEND=noninteractive
WORKDIR /ws
# Install the various depends
RUN apt-get update
RUN apt-get install -y openjdk-17-jdk-headless maven
RUN mkdir -p /usr/share/man/man1/ \
&& apt-get -y install git gcc g++ libboost-dev cmake zlib1g-dev libssl-dev libsasl2-dev \
liblz4-dev libzstd-dev librdkafka-dev
# Build/install yaml-cpp
RUN cd /tmp && git clone https://github.com/jbeder/yaml-cpp.git \
&& cd yaml-cpp \
&& mkdir build && cd build \
&& cmake -DBUILD_SHARED_LIBS=OFF .. \
&& make && make install \
&& cd /tmp
# Clean up
RUN rm -rf /tmp/* && apt-get clean

24
dev-image/README.md Normal file
View File

@ -0,0 +1,24 @@
OpenBMP Development Image
----------------------------
This image is the base development image used to build all the OpenBMP
components. It has all the needed dependencies included.
### Build Image
```
docker build -t openbmp/dev-image:build-NNN .
```
### Publish Image to dockerhub
```
# Login to docker
docker login
# Tag the image
docker tag openbmp/dev-image:build-NNN openbmp/dev-image:latest
# Upload the image
docker push openbmp/dev-image:build-NNN
docker push openbmp/dev-image:latest
```