94f02a9a21
* 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
54 lines
1.6 KiB
Docker
54 lines
1.6 KiB
Docker
FROM ubuntu:focal
|
|
|
|
## Usage:
|
|
# docker build -t bacnet --target bacnet .
|
|
# docker run --rm --name bacnet -d bacnet <device_id> [<device_name>]
|
|
|
|
## 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"]
|
|
|