Appendix A – dockerfile_zixi_broadcaster.raspberry.txt

# Get Ubuntu 20.04 Docker image FROM arm64v8/ubuntu:focal # Below required for Videon Docker environment RUN groupadd -g 3003 aid_inet && usermod -G nogroup -g aid_inet _apt RUN groupadd -g 3004 net_raw && usermod -G net_raw root ARG DEBIAN_FRONTEND=noninteractive ENV TZ=America/Los_Angeles # Variables EDIT ME WITH PROPER VERSION ENV zixiversion 16.3.44466 # Install necessary Linux packages RUN apt update --assume-yes # minimal required packages below RUN apt-get --assume-yes install tzdata ntp ethtool policycoreutils snmp wireless-tools net-tools dmidecode openssh-client iproute2 ipcalc xz-utils # tzdata for time zone definitions # ntp for ntp command # ethtool for /etc/network/interfaces file # policycoreutils for restorecon command # snmp for snmpget command # wireless-tools for iwconfig command # net-tools for ifconfig command # dmidecode for dmidecode command # openssh-client for ssh commmand # iproute2 for ip command # ipcalc for ipcalc command #RUN apt-get --assume-yes install tzdata policycoreutils inetutils-ping wireless-tools iptables ipcalc isc-dhcp-client dmidecode wakeonlan apt-utils net-tools snmp iproute2 ethtool ntp util-linux sysvinit-utils openssh-client openssh-server vim # following packages not be available to use in the Ubuntu 20.04 Docker env # network-manager rsyslog snmpd systemctl RUN service ntp start # Ubuntu Focal Fossa comes with the folder, but without the file. RUN touch /etc/network/interfaces RUN restorecon -v /etc/network/interfaces # Copy Zixi installer to new image and extract files COPY zixi_broadcaster-${zixiversion}.raspberry.tar.xz . RUN tar xvf zixi_broadcaster-${zixiversion}.raspberry.tar.xz # Copy files to proper folder - no systemd in Docker so need /debian/ scripts not /debian8/ RUN cp /zixi_broadcaster-raspberry/scripts/debian/* /zixi_broadcaster-raspberry/ # Create link to executable with no version for ENTRYPOINT command RUN ln -s /zixi_broadcaster-raspberry/zixi_broadcaster-${zixiversion} /zixi_broadcaster-raspberry/zixi_broadcaster # Informs Docker that the container listens on the specified ports # These are relevant ports for Broadcaster but some may not be necessary depending on use case # Ports that will be used need to published upon running the image for bridged mode # Some other ports may need to be added for RTP/UDP streams. # Web management UI, HTTP protocol EXPOSE 4444/TCP # Feeder push to Broadcaster, Zixi protocol EXPOSE 2088/UDP # Feeder push to Broadcaster, Zixi protocol with DTLS EXPOSE 7088/UDP # Receiver pull from Broadcaster, Zixi protocol EXPOSE 2077/UDP # Receiver pull from Broadcaster, Zixi protocol with DTLS EXPOSE 7077/UDP # Encoder push to Broadcaster, RTMP protocol EXPOSE 1935/TCP # HTTP streaming protocol - HLS or DASH when Broadcaster is origin server EXPOSE 7777/TCP # Create logs folder RUN mkdir /zixi_broadcaster-raspberry/logs # Create configs folder RUN mkdir /zixi_broadcaster-raspberry/configs # Preinstall a config file setting logs to be stored at zixi_broadcaster-raspberry/logs # Put it in the configs folders and then symlink it to the location the Broadcaster is expecting # Other settings for default behavior could be added to the config file as well RUN ln -s /zixi_broadcaster-raspberry/configs/broadcaster-config.xml /zixi_broadcaster-raspberry # Create the license file in the configs folder and symlink to the location the Broadcaster is expecting RUN ln -s /zixi_broadcaster-raspberry/configs/broadcaster.lic /zixi_broadcaster-raspberry # Create the info file in the configs folder and symlink to the location the Broadcaster is expecting RUN ln -s /zixi_broadcaster-raspberry/configs/broadcaster-info.xml /zixi_broadcaster-raspberry # Set final working directory WORKDIR /zixi_broadcaster-raspberry # Set the executable to start when the container is run ENTRYPOINT ["./zixi_broadcaster", "--no-daemon"]