From 94f02a9a21e57baa0a428c8765d7085878f76949 Mon Sep 17 00:00:00 2001 From: Chris Salisbury <20709243+ChrisSalisbury@users.noreply.github.com> Date: Sat, 30 Oct 2021 00:52:28 +0900 Subject: [PATCH] Add a Dockerfile and update bin readme (#202) * add dockerfile for easier testing * whitespace * update tools source location in bin readme * add target to example build and remove optional CMD from example run --- Dockerfile | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++ bin/readme.txt | 34 ++++++++++++++++---------------- 2 files changed, 70 insertions(+), 17 deletions(-) create mode 100644 Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..8c32a677 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,53 @@ +FROM ubuntu:focal + +## Usage: +# docker build -t bacnet --target bacnet . +# docker run --rm --name bacnet -d bacnet [] + +## To run client commands that affect this server from inside the same +## container, use BBMD Foreign Device Registration by first exporting +## the following: +# BACNET_IP_PORT, BACNET_BBMD_PORT, and BACNET_BBMD_ADDRESS + +## For example: +# docker run --rm --name bacnet -d bacnet +# docker exec -ti bacnet bash +# export BACNET_IP_PORT=47809 +# export BACNET_BBMD_PORT=47808 +# export BACNET_BBMD_ADDRESS="$(hostname -I | cut -d' ' -f1)" +# /opt/bacnet/bin/bacwi -1 1234 +# /opt/bacnet/bin/bacrp 1234 device 1234 object-name +## etc. + +## Check bacnet-stack/bin/readme.txt for more docs related to the +## example utilities and environment variables. Note that this docker +## image does not add the shell scripts in that folder as many of them +## are broken. Even so, reading them may be instructive. + + +SHELL ["/bin/bash", "-c"] + +RUN set -xe; \ + apt-get update; apt-get upgrade -y; apt-get --purge autoremove -y; \ + apt-get install -y build-essential curl; \ + apt-get -y autoclean; apt-get -y clean + +RUN set -euxo pipefail; \ + mkdir -p bin; \ + curl -LSs https://github.com/bacnet-stack/bacnet-stack/archive/refs/tags/bacnet-stack-1.0.0.tar.gz -o bacnet-stack.tar.gz; \ + tar -xzf bacnet-stack.tar.gz; \ + ( cd bacnet-*/; \ + make; \ + rm -f -- bin/*.{bat,sh,txt}; \ + mv -- bin/* /build/bin/; \ + ); \ + rm -rf bacnet-*/ + + +FROM ubuntu:focal AS bacnet +WORKDIR /opt/bacnet +COPY --from=builder /build/bin/* /opt/bacnet/bin/ +EXPOSE 47808/udp +ENTRYPOINT ["/opt/bacnet/bin/bacserv"] +CMD ["1234", "test_server"] + diff --git a/bin/readme.txt b/bin/readme.txt index cb031434..76030407 100644 --- a/bin/readme.txt +++ b/bin/readme.txt @@ -178,20 +178,20 @@ The source code and makefiles for the bacnet-tools is included in the BACnet Protocol Stack library and can be found at: http://bacnet.sourceforge.net/ -The bacnet-tools source is located in bacnet-stack/demo/project where: -bacarf - bacnet-stack/demo/readfile -bacawf - bacnet-stack/demo/writefile -bacdcc - bacnet-stack/demo/dcc -bacepics - bacnet-stack/demo/epics -bacrd - bacnet-stack/demo/reinit -bacrp - bacnet-stack/demo/readprop -bacrpm - bacnet-stack/demo/readpropm -bacscov - bacnet-stack/demo/scov -bacts - bacnet-stack/demo/timesync -bacucov - bacnet-stack/demo/ucov -bacupt - bacnet-stack/demo/uptransfer -bacwh - bacnet-stack/demo/whohas -bacwi - bacnet-stack/demo/whois -bacwp - bacnet-stack/demo/writeprop -bacserv - bacnet-stack/demo/server -etc. \ No newline at end of file +The bacnet-tools source is located in bacnet-stack/apps/project where: +bacarf - bacnet-stack/apps/readfile +bacawf - bacnet-stack/apps/writefile +bacdcc - bacnet-stack/apps/dcc +bacepics - bacnet-stack/apps/epics +bacrd - bacnet-stack/apps/reinit +bacrp - bacnet-stack/apps/readprop +bacrpm - bacnet-stack/apps/readpropm +bacscov - bacnet-stack/apps/scov +bacts - bacnet-stack/apps/timesync +bacucov - bacnet-stack/apps/ucov +bacupt - bacnet-stack/apps/uptransfer +bacwh - bacnet-stack/apps/whohas +bacwi - bacnet-stack/apps/whois +bacwp - bacnet-stack/apps/writeprop +bacserv - bacnet-stack/apps/server +etc.