Initial commit
This commit is contained in:
+34
@@ -0,0 +1,34 @@
|
||||
# syntax=docker/dockerfile:1
|
||||
FROM jayfield/novnc-baseimage
|
||||
|
||||
RUN apt-get update && \
|
||||
apt-get -y install --no-install-recommends soapysdr-module-all soapyremote-server soapysdr-tools uhd-host uhd-soapysdr gqrx-sdr && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
RUN openssl req -x509 -nodes -newkey rsa:2048 -keyout /tmp/novnc.key -out /tmp/novnc.pem -days 3650 -subj "/C=US/ST=NY/L=NY/O=NY/OU=NY/CN=NY emailAddress=email@example.com"
|
||||
RUN /usr/bin/uhd_images_downloader
|
||||
|
||||
ENV DISPLAY_NUM=99
|
||||
ENV DISPLAY=:${DISPLAY_NUM}
|
||||
|
||||
RUN useradd -m jens -p jens -s /usr/bin/bash
|
||||
|
||||
WORKDIR /home/jensi
|
||||
RUN touch .Xauthority
|
||||
|
||||
ENV SCRIPTS_HOME=/opt/scripts
|
||||
ENV PATH=${PATH}:${SCRIPTS_HOME}
|
||||
|
||||
ADD scripts ${SCRIPTS_HOME}
|
||||
WORKDIR /tmp/apps
|
||||
|
||||
RUN rm -rf /tmp/apps
|
||||
RUN cd ~
|
||||
|
||||
EXPOSE 60${DISPLAY_NUM}
|
||||
EXPOSE 5900
|
||||
|
||||
ENTRYPOINT ["/opt/scripts/server_start.sh", "/opt/scripts/server.sh"]
|
||||
|
||||
# see also
|
||||
# https://github.com/ich777/docker-krusader
|
||||
@@ -0,0 +1,9 @@
|
||||
docker run --rm -d \
|
||||
--privileged \
|
||||
--net bridge \
|
||||
--env SCREEN_W=1536 \
|
||||
--env SCREEN_H=960 \
|
||||
--device /dev/snd \
|
||||
--name sdr-novnc \
|
||||
--volume /var/run/dbus/system_bus_socket:/var/run/dbus/system_bus_socket \
|
||||
jayfield/sdr-novnc
|
||||
Executable
+10
@@ -0,0 +1,10 @@
|
||||
#!/usr/bin/env bash
|
||||
set -x
|
||||
|
||||
RFB_PORT=59${DISPLAY_NUM}
|
||||
NOVNC_PORT=80${DISPLAY_NUM}
|
||||
|
||||
echo Display at ${DISPLAY} with ${SCREEN_W}x${SCREEN_H}x24
|
||||
/opt/TurboVNC/bin/Xvnc ${DISPLAY} -geometry ${SCREEN_W}x${SCREEN_H} -depth 24 +xinerama -securitytypes none >/var/log/xvfb.log &
|
||||
fluxbox &
|
||||
/tmp/websockify/run -D --web=/tmp/noVNC/ --cert=/tmp/novnc.pem --key=/tmp/novnc.key ${NOVNC_PORT} localhost:${RFB_PORT}
|
||||
Executable
+34
@@ -0,0 +1,34 @@
|
||||
#!/usr/bin/env bash
|
||||
APP=$1
|
||||
set -x
|
||||
|
||||
# Signal helper
|
||||
source /opt/scripts/signals.sh
|
||||
|
||||
PID=0
|
||||
TERM_handler() {
|
||||
SIGNAME="$1"
|
||||
echo "Killing ${PID}"
|
||||
echo "Signal ${SIGNAME}"
|
||||
if [ ${PID} -ne 0 ]; then
|
||||
ps -ef --forest
|
||||
CHILDS=$(pgrep -P "${PID}")
|
||||
kill -"${SIGNAME}" -"${PID}"
|
||||
for i in $CHILDS; do
|
||||
wait $i
|
||||
done
|
||||
fi
|
||||
ps -ef --forest
|
||||
ret=$(signal_return_val ${SIGNAME})
|
||||
exit $ret
|
||||
}
|
||||
|
||||
signals_trap_with_arg TERM_handler SIGTERM
|
||||
${APP} &
|
||||
PID=$$
|
||||
|
||||
# wait forever
|
||||
signals_wait_forever
|
||||
|
||||
# https://docs.docker.com/compose/faq/
|
||||
# https://medium.com/@gchudnov/trapping-signals-in-docker-containers-7a57fdda7d86
|
||||
@@ -0,0 +1,25 @@
|
||||
signals_trap_with_arg() {
|
||||
func="$1" ; shift
|
||||
for sig ; do
|
||||
echo "$func $sig"
|
||||
trap "$func $sig" "$sig"
|
||||
done
|
||||
}
|
||||
|
||||
signals_wait_forever() {
|
||||
while true
|
||||
do
|
||||
tail -f /dev/null & wait ${!}
|
||||
done
|
||||
}
|
||||
|
||||
signal_name_to_number() {
|
||||
SIGNAME="$1"
|
||||
trap -l | sed -nr "s/.*\b([0-9]+)\) $SIGNAME.*/\1/p"
|
||||
}
|
||||
|
||||
signal_return_val() {
|
||||
SIGNAME="$1"
|
||||
SIGNUM=$(signal_name_to_number ${SIGNAME})
|
||||
echo "128 + $SIGNUM" | bc
|
||||
}
|
||||
Reference in New Issue
Block a user