镜像构建历史
# 2025-03-23 02:25:51 0.00B 指定检查容器健康状态的命令
HEALTHCHECK &{["CMD-SHELL" "/scripts/healthcheck.sh"] "10m0s" "0s" "1h0m0s" "0s" '\x00'}
# 2025-03-23 02:25:51 0.00B 配置容器启动时运行的命令
ENTRYPOINT ["/init"]
# 2025-03-23 02:25:51 133.85MB 执行命令并创建新的镜像层
RUN /bin/bash -o pipefail -c set -x && TEMP_PACKAGES=() && KEPT_PACKAGES=() && KEPT_PACKAGES+=(protobuf-compiler) && KEPT_PACKAGES+=(git) && TEMP_PACKAGES+=(build-essential) && TEMP_PACKAGES+=(pkg-config) && TEMP_PACKAGES+=(cmake) && TEMP_PACKAGES+=(autoconf) && TEMP_PACKAGES+=(automake) && KEPT_PACKAGES+=(lighttpd) && KEPT_PACKAGES+=(lighttpd-mod-magnet) && KEPT_PACKAGES+=(collectd-core) && KEPT_PACKAGES+=(rrdtool) && KEPT_PACKAGES+=(jq) && TEMP_PACKAGES+=(apt-transport-https) && KEPT_PACKAGES+=(socat) && TEMP_PACKAGES+=(gnupg) && TEMP_PACKAGES+=(libtool) && KEPT_PACKAGES+=(libfftw3-bin) && TEMP_PACKAGES+=(libfftw3-dev) && TEMP_PACKAGES+=(libusb-1.0-0-dev) && apt-get update && apt-get install -o Dpkg::Options::="--force-confold" --force-yes -y --no-install-recommends ${KEPT_PACKAGES[@]} ${TEMP_PACKAGES[@]} && curl -o /etc/s6-overlay/scripts/05-rtlsdr-biastee-init https://raw.githubusercontent.com/sdr-enthusiasts/sdre-bias-t-common/main/09-rtlsdr-biastee-init && curl -o /etc/s6-overlay/scripts/05-rtlsdr-biastee-down https://raw.githubusercontent.com/sdr-enthusiasts/sdre-bias-t-common/main/09-rtlsdr-biastee-down && chmod +x /etc/s6-overlay/scripts/05-rtlsdr-biastee-init && chmod +x /etc/s6-overlay/scripts/05-rtlsdr-biastee-down && git config --global advice.detachedHead false && git clone https://github.com/steve-m/kalibrate-rtl.git "/src/kalibrate-rtl" && pushd "/src/kalibrate-rtl" && echo "kalibrate-rtl $(git log | head -1 | tr -s ' ' '_')" >> /VERSIONS && ./bootstrap && ./configure && make all install && popd && ln -s /etc/lighttpd/conf-available/01-setenv.conf /etc/lighttpd/conf-enabled/01-setenv.conf && ln -s /etc/lighttpd/conf-available/87-cachebust.conf /etc/lighttpd/conf-enabled/87-cachebust.conf && ln -s /etc/lighttpd/conf-available/89-readsb.conf /etc/lighttpd/conf-enabled/89-readsb.conf && ln -s /etc/lighttpd/conf-available/88-readsb-statcache.conf /etc/lighttpd/conf-enabled/88-readsb-statcache.conf && mkdir -p /etc/lighttpd/lua && echo -e 'server.modules += ("mod_magnet")\n\n$HTTP["url"] =~ "^/health/?" {\n magnet.attract-physical-path-to = ("/etc/lighttpd/lua/healthcheck.lua")\n}' > /etc/lighttpd/conf-enabled/90-healthcheck.conf && echo -e 'lighty.content = { "OK" }\nreturn 200' > /etc/lighttpd/lua/healthcheck.lua && addgroup --system --gid 1000 readsb && useradd --uid 1000 --system --home-dir /usr/share/readsb --no-create-home --no-user-group --gid 1000 --groups plugdev,dialout readsb && mkdir -p "/var/lib/collectd/rrd/localhost/readsb" && chmod -R 755 "/var/lib/collectd" && chown readsb "/var/lib/collectd" && chown -R readsb: "/usr/share/readsb" && mkdir -p "/run/readsb" && chmod -R 755 "/run/readsb" && chown -R readsb: "/run/readsb" && touch "/etc/default/readsb" && chown -R readsb: "/etc/default/readsb" && sed -i 's/^server\.pid-file.*/server.pid-file = "\/var\/run\/lighttpd\/lighttpd.pid"/g' /etc/lighttpd/lighttpd.conf && mkdir -p "/var/run/lighttpd" && chown readsb "/var/run/lighttpd" && mkdir -p "/var/cache/lighttpd/compress/script/readsb/backend" && mkdir -p "/var/cache/lighttpd/compress/css/bootstrap" && mkdir -p "/var/cache/lighttpd/compress/css/leaflet" && chown -R readsb:www-data "/var/cache/lighttpd" && chmod -R u+rwx,g+rwx "/var/cache/lighttpd" && rm -v "/etc/lighttpd/conf-enabled/99-unconfigured.conf" && sed -i 's/^server\.port.*/server.port = 8080/g' /etc/lighttpd/lighttpd.conf && sed -i 's/^server\.errorlog.*//g' /etc/lighttpd/lighttpd.conf && mv -v "/var/lib/collectd" "/run" && chown -R readsb "/run/collectd" && ln -s "/run/collectd" "/var/lib" && mv -v /etc/collectd.readsb/collectd.conf /etc/collectd/collectd.conf && rmdir /etc/collectd.readsb && sed -i 's/^LoadPlugin syslog.*//g' /etc/collectd/collectd.conf.d/readsb.collectd.conf && sed -i 's/^LoadPlugin exec.*//g' /etc/collectd/collectd.conf.d/readsb.collectd.conf && sed -i 's/^LoadPlugin curl.*//g' /etc/collectd/collectd.conf.d/readsb.collectd.conf && sed -i '/<Plugin syslog>/,/<\/Plugin>/d' /etc/collectd/collectd.conf.d/readsb.collectd.conf && sed -i 's/Disk "mmcblk0"/Disk "mmcblk0"\n\tDisk "mmcblk1"\n\tDisk "sda"\n\tDisk "hda"/g' /etc/collectd/collectd.conf.d/readsb.collectd.conf && sed -i 's/<Chain "PostCache">/<Plugin table>\n\t<Table "\/tmp\/.gain_current">\n\t\tInstance localhost\n\t\tSeparator " "\n\t\t<Result>\n\t\t\tType gauge\n\t\t\tInstancePrefix "gain"\n\t\t\tValuesFrom 0\n\t\t<\/Result>\n\t<\/Table>\n<\/Plugin>\n\n<Chain "PostCache">/g' /etc/collectd/collectd.conf.d/readsb.collectd.conf && sed -i '/--vertical-label "dBFS"/ {N; s/--right-axis 1:0 \\/--right-axis 1.2:50 \\\n\t\t--right-axis-label "dB" \\/}' /usr/share/readsb/graphs/graphs.sh && sed -i 's/"DEF:peak=$(check $2\/dbfs_max_signal.rrd):value:MAX" \\/"DEF:peak=$(check $2\/dbfs_max_signal.rrd):value:MAX" \\\n "DEF:dgain=$(check \/var\/run\/collectd\/rrd\/localhost\/table-localhost\/gauge-gain.rrd):value:AVERAGE" \\/g' /usr/share/readsb/graphs/graphs.sh && sed -i 's/"CDEF:mes=median,UN,signal,median,IF" \\/"CDEF:mes=median,UN,signal,median,IF" \\\n\t\t"CDEF:gain=dgain,1.2,*,50,-" \\/g' /usr/share/readsb/graphs/graphs.sh && sed -i 's/"GPRINT:peak:MAX:%4.1lf\\c" \\/"GPRINT:peak:MAX:%4.1lf\\c" \\\n\t\t"LINE1:gain#$RED:Gain Level (RHS)\\:" \\\n\t\t"GPRINT:dgain:LAST:%4.1lf\\c" \\/g' /usr/share/readsb/graphs/graphs.sh && mkdir -p "/run/autogain" && chown readsb "/run/autogain" && mkdir -p /etc/telegraf/telegraf.d && mv -v /etc/telegraf.readsb/telegraf.conf /etc/telegraf/telegraf.conf && rmdir /etc/telegraf.readsb && echo "telegraf --version" >> /VERSIONS && curl --location -o /usr/share/readsb/html/db/aircrafts.json -z /usr/share/readsb/html/db/aircrafts.json 'https://github.com/Mictronics/readsb-protobuf/raw/dev/webapp/src/db/aircrafts.json' && curl --location -o /usr/share/readsb/html/db/dbversion.json -z /usr/share/readsb/html/db/dbversion.json 'https://github.com/Mictronics/readsb-protobuf/raw/dev/webapp/src/db/dbversion.json' && curl --location -o /usr/share/readsb/html/db/operators.json -z /usr/share/readsb/html/db/operators.json 'https://github.com/Mictronics/readsb-protobuf/raw/dev/webapp/src/db/operators.json' && curl --location -o /usr/share/readsb/html/db/types.json -z /usr/share/readsb/html/db/types.json 'https://github.com/Mictronics/readsb-protobuf/raw/dev/webapp/src/db/types.json' && apt-get remove -y ${TEMP_PACKAGES[@]} && apt-get autoremove -y && rm -rf /src/* /tmp/* /var/lib/apt/lists/* && echo "readsb $(readsb --version | cut -d ' ' -f 2)" >> /VERSIONS && cat /VERSIONS && readsb --version | cut -d ' ' -f 2 > /CONTAINER_VERSION # buildkit
# 2025-03-23 02:25:26 92.41KB 复制新文件或目录到容器中
COPY rootfs/ / # buildkit
# 2025-03-23 02:25:26 0.00B
SHELL [/bin/bash -o pipefail -c]
# 2025-03-23 02:25:26 0.00B 设置环境变量 S6_BEHAVIOUR_IF_STAGE2_FAILS READSBRRD_STEP READSB_GRAPH_SIZE READSB_GRAPH_ALL_LARGE READSB_GRAPH_FONT_SIZE READSB_GRAPH_MAX_MESSAGES_LINE READSB_GRAPH_LARGE_WIDTH READSB_GRAPH_LARGE_HEIGHT READSB_GRAPH_SMALL_WIDTH READSB_GRAPH_SMALL_HEIGHT AUTOGAIN_SERVICE_PERIOD AUTOGAIN_STATE_FILE AUTOGAIN_CURRENT_VALUE_FILE AUTOGAIN_CURRENT_TIMESTAMP_FILE AUTOGAIN_REVIEW_TIMESTAMP_FILE AUTOGAIN_PERCENT_STRONG_MESSAGES_MAX AUTOGAIN_PERCENT_STRONG_MESSAGES_MIN AUTOGAIN_INITIAL_PERIOD AUTOGAIN_INITIAL_MSGS_ACCEPTED AUTOGAIN_FINETUNE_PERIOD AUTOGAIN_FINETUNE_MSGS_ACCEPTED AUTOGAIN_FINISHED_PERIOD AUTOGAIN_MAX_GAIN_VALUE AUTOGAIN_MIN_GAIN_VALUE AUTOGAIN_RUNNING_FILE AUTOGAIN_MAX_GAIN_VALUE_FILE AUTOGAIN_MIN_GAIN_VALUE_FILE READSB_STATS_PB_FILE READSB_PROTO_PATH GAIN_VALUE_FILE READSB_NET_BEAST_OUTPUT_PORT READSB_NET_SBS_OUTPUT_PORT READSB_NET_RAW_OUTPUT_PORT PROMETHEUSPORT PROMETHEUSPATH
ENV S6_BEHAVIOUR_IF_STAGE2_FAILS=2 READSBRRD_STEP=60 READSB_GRAPH_SIZE=default READSB_GRAPH_ALL_LARGE=no READSB_GRAPH_FONT_SIZE=10.0 READSB_GRAPH_MAX_MESSAGES_LINE=0 READSB_GRAPH_LARGE_WIDTH=1096 READSB_GRAPH_LARGE_HEIGHT=235 READSB_GRAPH_SMALL_WIDTH=619 READSB_GRAPH_SMALL_HEIGHT=324 AUTOGAIN_SERVICE_PERIOD=900 AUTOGAIN_STATE_FILE=/run/autogain/state AUTOGAIN_CURRENT_VALUE_FILE=/run/autogain/autogain_current_value AUTOGAIN_CURRENT_TIMESTAMP_FILE=/run/autogain/autogain_current_timestamp AUTOGAIN_REVIEW_TIMESTAMP_FILE=/run/autogain/autogain_review_timestamp AUTOGAIN_PERCENT_STRONG_MESSAGES_MAX=10.0 AUTOGAIN_PERCENT_STRONG_MESSAGES_MIN=0.5 AUTOGAIN_INITIAL_PERIOD=7200 AUTOGAIN_INITIAL_MSGS_ACCEPTED=1000000 AUTOGAIN_FINETUNE_PERIOD=604800 AUTOGAIN_FINETUNE_MSGS_ACCEPTED=7000000 AUTOGAIN_FINISHED_PERIOD=31536000 AUTOGAIN_MAX_GAIN_VALUE=49.6 AUTOGAIN_MIN_GAIN_VALUE=0.0 AUTOGAIN_RUNNING_FILE=/tmp/.autogain_running AUTOGAIN_MAX_GAIN_VALUE_FILE=/run/autogain/autogain_max_value AUTOGAIN_MIN_GAIN_VALUE_FILE=/run/autogain/autogain_min_value READSB_STATS_PB_FILE=/run/readsb/stats.pb READSB_PROTO_PATH=/opt/readsb-protobuf GAIN_VALUE_FILE=/tmp/.gain_current READSB_NET_BEAST_OUTPUT_PORT=30005 READSB_NET_SBS_OUTPUT_PORT=30003 READSB_NET_RAW_OUTPUT_PORT=30002 PROMETHEUSPORT=9273 PROMETHEUSPATH=/metrics
# 2025-03-23 02:25:26 292.75MB 复制新文件或目录到容器中
COPY /usr/bin/telegraf /usr/bin/telegraf # buildkit
# 2025-03-23 02:07:22 71.04MB 执行命令并创建新的镜像层
RUN /bin/bash -o pipefail -c set -x && TEMP_PACKAGES=() && KEPT_PACKAGES=() && TEMP_PACKAGES+=(git) && TEMP_PACKAGES+=(build-essential) && TEMP_PACKAGES+=(cmake) && TEMP_PACKAGES+=(pkg-config) && TEMP_PACKAGES+=(libusb-1.0-0-dev) && KEPT_PACKAGES+=(libncurses5) && TEMP_PACKAGES+=(libncurses5-dev) && KEPT_PACKAGES+=(libtecla1) && TEMP_PACKAGES+=(libtecla-dev) && TEMP_PACKAGES+=(libusb-1.0-0-dev) && KEPT_PACKAGES+=(libserialport0) && TEMP_PACKAGES+=(libserialport-dev) && KEPT_PACKAGES+=(libxml2) && TEMP_PACKAGES+=(libxml2-dev) && TEMP_PACKAGES+=(bison) && TEMP_PACKAGES+=(flex) && KEPT_PACKAGES+=(libcdk5nc6) && TEMP_PACKAGES+=(libcdk5-dev) && KEPT_PACKAGES+=(libaio1) && TEMP_PACKAGES+=(libaio-dev) && KEPT_PACKAGES+=(protobuf-c-compiler) && KEPT_PACKAGES+=(libprotobuf-c1) && TEMP_PACKAGES+=(libprotobuf-c-dev) && TEMP_PACKAGES+=(librrd-dev) && KEPT_PACKAGES+=(libncurses5) && TEMP_PACKAGES+=(libncurses5-dev) && TEMP_PACKAGES+=(binutils) && apt-get update && apt-get install -y --no-install-recommends "${KEPT_PACKAGES[@]}" "${TEMP_PACKAGES[@]}" && BRANCH_BLADERF=$(git -c 'versionsort.suffix=-' ls-remote --tags --sort='v:refname' 'https://github.com/Nuand/bladeRF.git' | grep -v '\^' | grep 'refs/tags/libbladeRF_' | cut -d '/' -f 3 | tail -1) && git clone --branch "$BRANCH_BLADERF" --depth 1 --single-branch 'https://github.com/Nuand/bladeRF.git' /src/bladeRF && mkdir /src/bladeRF/build && pushd /src/bladeRF/build && cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local -DINSTALL_UDEV_RULES=ON ../ && make -j "$(nproc)" && make install && ldconfig && popd && bladeRF-cli --version && BRANCH_LIBIIO=$(git -c 'versionsort.suffix=-' ls-remote --tags --sort='v:refname' 'https://github.com/analogdevicesinc/libiio.git' | grep -v '\^' | grep -v '.*-r.*' | cut -d '/' -f 3 | tail -1) && git clone --branch "$BRANCH_LIBIIO" --depth 1 --single-branch 'https://github.com/analogdevicesinc/libiio.git' /src/libiio && mkdir /src/libiio/build && pushd /src/libiio/build && cmake -DCMAKE_BUILD_TYPE=Release -DCSHARP_BINDINGS=OFF -DPYTHON_BINDINGS=OFF -DWITH_DOC=OFF -DWITH_MAN=OFF -DWITH_TESTS=OFF -DWITH_LOCAL_CONFIG=OFF -DWITH_HWMON=OFF -DENABLE_PACKAGING=OFF -DINSTALL_UDEV_RULE=ON -DHAVE_DNS_SD=OFF ../ && make -j "$(nproc)" && make install && ldconfig && popd && BRANCH_LIBAD9361_IIO=$(git -c 'versionsort.suffix=-' ls-remote --tags --sort='v:refname' 'https://github.com/analogdevicesinc/libad9361-iio.git' | grep -v '\^' | cut -d '/' -f 3 | tail -1) && git clone --branch "$BRANCH_LIBAD9361_IIO" --depth 1 --single-branch 'https://github.com/analogdevicesinc/libad9361-iio.git' /src/libad9361-iio && mkdir /src/libad9361-iio/build && pushd /src/libad9361-iio/build && cmake -DCMAKE_BUILD_TYPE=Release ../ && make -j "$(nproc)" && make install && ldconfig && popd && BRANCH_READSB="dev" && git clone --branch "$BRANCH_READSB" --depth 1 --single-branch 'https://github.com/Mictronics/readsb-protobuf.git' /src/readsb-protobuf && pushd /src/readsb-protobuf && make BLADERF=yes RTLSDR=yes PLUTOSDR=yes HAVE_BIASTEE=yes && find "/src/readsb-protobuf" -maxdepth 1 -executable -type f -exec cp -v {} /usr/local/bin/ \; && popd && ldconfig && readsb --version && viewadsb --version && readsbrrd --version && mkdir -p /usr/share/readsb/html && cp -Rv /src/readsb-protobuf/webapp/src/* /usr/share/readsb/html/ && mkdir -p /etc/lighttpd/conf-available/ && cp -v /src/readsb-protobuf/debian/lighttpd/* /etc/lighttpd/conf-available/ && mkdir -p /etc/collectd/collectd.conf.d && cp -v /src/readsb-protobuf/debian/collectd/readsb.collectd.conf /etc/collectd/collectd.conf.d/ && mkdir -p /usr/share/readsb/graphs && cp -v /src/readsb-protobuf/debian/graphs/*.sh /usr/share/readsb/graphs/ && chmod a+x /usr/share/readsb/graphs/*.sh && mkdir -p /opt/readsb-protobuf && cp -v /src/readsb-protobuf/readsb.proto /opt/readsb-protobuf/readsb.proto && BLADERF_RBF_PATH="/usr/share/Nuand/bladeRF" && mkdir -p "$BLADERF_RBF_PATH" && curl -L -o "$BLADERF_RBF_PATH/hostedxA4.rbf" https://www.nuand.com/fpga/hostedxA4-latest.rbf && curl -L -o "$BLADERF_RBF_PATH/hostedxA9.rbf" https://www.nuand.com/fpga/hostedxA9-latest.rbf && curl -L -o "$BLADERF_RBF_PATH/hostedx40.rbf" https://www.nuand.com/fpga/hostedx40-latest.rbf && curl -L -o "$BLADERF_RBF_PATH/hostedx115.rbf" https://www.nuand.com/fpga/hostedx115-latest.rbf && curl -L -o "$BLADERF_RBF_PATH/adsbxA4.rbf" https://www.nuand.com/fpga/adsbxA4.rbf && curl -L -o "$BLADERF_RBF_PATH/adsbxA9.rbf" https://www.nuand.com/fpga/adsbxA9.rbf && curl -L -o "$BLADERF_RBF_PATH/adsbx40.rbf" https://www.nuand.com/fpga/adsbx40.rbf && curl -L -o "$BLADERF_RBF_PATH/adsbx115.rbf" https://www.nuand.com/fpga/adsbx115.rbf && apt-get remove -y "${TEMP_PACKAGES[@]}" && apt-get autoremove -q -o APT::Autoremove::RecommendsImportant=0 -o APT::Autoremove::SuggestsImportant=0 -y && rm -rf /src/* && bash /scripts/clean-build.sh # buildkit
# 2025-03-23 02:07:22 0.00B
SHELL [/bin/bash -o pipefail -c]
# 2025-03-23 01:56:23 1.83MB 执行命令并创建新的镜像层
RUN /bin/bash -o pipefail -c set -x && TEMP_PACKAGES=() && KEPT_PACKAGES=() && TEMP_PACKAGES+=(git) && TEMP_PACKAGES+=(build-essential) && TEMP_PACKAGES+=(cmake) && TEMP_PACKAGES+=(pkg-config) && TEMP_PACKAGES+=(libusb-1.0-0-dev) && KEPT_PACKAGES+=(libusb-1.0-0) && apt-get update && apt-get install -y --no-install-recommends "${KEPT_PACKAGES[@]}" "${TEMP_PACKAGES[@]}" && git clone --branch master --depth 1 --single-branch https://gitea.osmocom.org/sdr/rtl-sdr.git /src/rtl-sdr && mkdir -p /src/rtl-sdr/build && pushd /src/rtl-sdr/build && git rev-parse HEAD > /CONTAINER_VERSION && cmake -DCMAKE_BUILD_TYPE=Release -DDETACH_KERNEL_DRIVER=ON -DINSTALL_UDEV_RULES=ON ../ && make -j "$(nproc)" && make install && ldconfig && popd && BRANCH_SOAPYSDR=$(git -c 'versionsort.suffix=-' ls-remote --tags --sort='v:refname' 'https://github.com/pothosware/SoapySDR.git' | grep -v '\^' | cut -d '/' -f 3 | grep '^soapy-sdr-.*' | tail -1) && git clone --depth 1 --branch "$BRANCH_SOAPYSDR" "https://github.com/pothosware/SoapySDR.git" "/src/SoapySDR" && mkdir -p /src/SoapySDR/build && pushd /src/SoapySDR/build && cmake -DCMAKE_BUILD_TYPE=Release -Wno-dev ../ && make -j "$(nproc)" && make install && ldconfig && popd && SoapySDRUtil --info && BRANCH_SOAPYRTLSDR=$(git -c 'versionsort.suffix=-' ls-remote --tags --sort='v:refname' 'https://github.com/pothosware/SoapyRTLSDR.git' | grep -v '\^' | cut -d '/' -f 3 | grep '^soapy-rtl-.*' | tail -1) && git clone --depth 1 --branch "$BRANCH_SOAPYRTLSDR" "https://github.com/pothosware/SoapyRTLSDR.git" "/src/SoapyRTLSDR" && mkdir -p /src/SoapyRTLSDR/build && pushd /src/SoapyRTLSDR/build && cmake -DCMAKE_BUILD_TYPE=Release -Wno-dev ../ && make -j "$(nproc)" && make install && ldconfig && popd && SoapySDRUtil --check=rtlsdr && apt-get remove -y "${TEMP_PACKAGES[@]}" && apt-get autoremove -q -o APT::Autoremove::RecommendsImportant=0 -o APT::Autoremove::SuggestsImportant=0 -y && rm -rf /src/* && bash /scripts/clean-build.sh # buildkit
# 2025-03-23 01:56:23 0.00B
SHELL [/bin/bash -o pipefail -c]
# 2025-03-23 01:52:09 0.00B 配置容器启动时运行的命令
ENTRYPOINT ["/init"]
# 2025-03-23 01:52:09 70.77MB 执行命令并创建新的镜像层
RUN /bin/bash -o pipefail -c set -x && TEMP_PACKAGES=() && KEPT_PACKAGES=() && TEMP_PACKAGES+=(git) && KEPT_PACKAGES+=(gawk) && KEPT_PACKAGES+=(pv) && TEMP_PACKAGES+=(file) && KEPT_PACKAGES+=(curl) && TEMP_PACKAGES+=(xz-utils) && KEPT_PACKAGES+=(ca-certificates) && KEPT_PACKAGES+=(bc) && KEPT_PACKAGES+=(socat) && KEPT_PACKAGES+=(ncat) && KEPT_PACKAGES+=(net-tools) && KEPT_PACKAGES+=(wget) && KEPT_PACKAGES+=(procps) && TEMP_PACKAGES+=(gcc) && TEMP_PACKAGES+=(build-essential) && KEPT_PACKAGES+=(nano) && KEPT_PACKAGES+=(iputils-ping) && KEPT_PACKAGES+=(dnsutils) && mkdir -p /usr/sbin/ && ln -s /usr/bin/dpkg-split /usr/sbin/dpkg-split && ln -s /usr/bin/dpkg-deb /usr/sbin/dpkg-deb && ln -s /bin/tar /usr/sbin/tar && apt-get update && apt-get install -y --no-install-recommends "${KEPT_PACKAGES[@]}" "${TEMP_PACKAGES[@]}" && curl --location --output /tmp/deploy-s6-overlay.sh https://raw.githubusercontent.com/mikenye/deploy-s6-overlay/master/deploy-s6-overlay-v3.sh && sh /tmp/deploy-s6-overlay.sh && rm -f /tmp/deploy-s6-overlay.sh && git clone --depth=1 https://github.com/mikenye/docker-healthchecks-framework.git /opt/healthchecks-framework && rm -rf /opt/healthchecks-framework/.git* /opt/healthchecks-framework/*.md /opt/healthchecks-framework/tests && sed -i 's/S6_SERVICE_PATH="\/run\/s6\/services"/S6_SERVICE_PATH="\/run\/s6\/legacy-services"/g' /opt/healthchecks-framework/checks/check_s6_service_abnormal_death_tally.sh && pushd /tmp && git clone --depth=1 https://github.com/wiedehopf/s6wrap.git && cd s6wrap && make && mv s6wrap /usr/local/bin && popd && mkdir -p /scripts /etc/cont-init.d && curl -sSL https://raw.githubusercontent.com/sdr-enthusiasts/Buster-Docker-Fixes/main/install_libseccomp2.sh | bash && chmod +x /etc/s6-overlay/s6-rc.d/libseccomp2/up && chmod +x /etc/s6-overlay/scripts/libseccomp2_check.sh && cp /app/scripts/* /scripts/ && apt-get remove -y "${TEMP_PACKAGES[@]}" && apt-get autoremove -q -o APT::Autoremove::RecommendsImportant=0 -o APT::Autoremove::SuggestsImportant=0 -y && rm -rf /src/* && bash /scripts/clean-build.sh # buildkit
# 2025-03-23 01:52:09 0.00B
SHELL [/bin/bash -o pipefail -c]
# 2025-03-23 01:52:09 0.00B 设置环境变量 S6_BEHAVIOUR_IF_STAGE2_FAILS S6OVERLAY_VERSION S6_CMD_WAIT_FOR_SERVICES_MAXTIME PATH
ENV S6_BEHAVIOUR_IF_STAGE2_FAILS=2 S6OVERLAY_VERSION=v3.2.0.2 S6_CMD_WAIT_FOR_SERVICES_MAXTIME=0 PATH=/command:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# 2025-03-17 08:00:00 74.78MB
# debian.sh --arch 'amd64' out/ 'bookworm' '@1742169600'
镜像信息
{
"Id": "sha256:34784fa0d78f15c448315a7321ef3f389bb83a6597fe0fbc56699d361d9d9c78",
"RepoTags": [
"ghcr.io/sdr-enthusiasts/docker-readsb-protobuf:latest",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/sdr-enthusiasts/docker-readsb-protobuf:latest"
],
"RepoDigests": [
"ghcr.io/sdr-enthusiasts/docker-readsb-protobuf@sha256:a6df0d993fb08c4956770d7627f29764b424fb6387a39d28e805f295ddd414c1",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/sdr-enthusiasts/docker-readsb-protobuf@sha256:5b7a044d50001ae12df122e76148ad9dc6c33cf8f11b011374448d8aee3b7653"
],
"Parent": "",
"Comment": "buildkit.dockerfile.v0",
"Created": "2025-03-22T18:25:51.657018956Z",
"Container": "",
"ContainerConfig": null,
"DockerVersion": "",
"Author": "",
"Config": {
"Hostname": "",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/command:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"S6_BEHAVIOUR_IF_STAGE2_FAILS=2",
"S6OVERLAY_VERSION=v3.2.0.2",
"S6_CMD_WAIT_FOR_SERVICES_MAXTIME=0",
"READSBRRD_STEP=60",
"READSB_GRAPH_SIZE=default",
"READSB_GRAPH_ALL_LARGE=no",
"READSB_GRAPH_FONT_SIZE=10.0",
"READSB_GRAPH_MAX_MESSAGES_LINE=0",
"READSB_GRAPH_LARGE_WIDTH=1096",
"READSB_GRAPH_LARGE_HEIGHT=235",
"READSB_GRAPH_SMALL_WIDTH=619",
"READSB_GRAPH_SMALL_HEIGHT=324",
"AUTOGAIN_SERVICE_PERIOD=900",
"AUTOGAIN_STATE_FILE=/run/autogain/state",
"AUTOGAIN_CURRENT_VALUE_FILE=/run/autogain/autogain_current_value",
"AUTOGAIN_CURRENT_TIMESTAMP_FILE=/run/autogain/autogain_current_timestamp",
"AUTOGAIN_REVIEW_TIMESTAMP_FILE=/run/autogain/autogain_review_timestamp",
"AUTOGAIN_PERCENT_STRONG_MESSAGES_MAX=10.0",
"AUTOGAIN_PERCENT_STRONG_MESSAGES_MIN=0.5",
"AUTOGAIN_INITIAL_PERIOD=7200",
"AUTOGAIN_INITIAL_MSGS_ACCEPTED=1000000",
"AUTOGAIN_FINETUNE_PERIOD=604800",
"AUTOGAIN_FINETUNE_MSGS_ACCEPTED=7000000",
"AUTOGAIN_FINISHED_PERIOD=31536000",
"AUTOGAIN_MAX_GAIN_VALUE=49.6",
"AUTOGAIN_MIN_GAIN_VALUE=0.0",
"AUTOGAIN_RUNNING_FILE=/tmp/.autogain_running",
"AUTOGAIN_MAX_GAIN_VALUE_FILE=/run/autogain/autogain_max_value",
"AUTOGAIN_MIN_GAIN_VALUE_FILE=/run/autogain/autogain_min_value",
"READSB_STATS_PB_FILE=/run/readsb/stats.pb",
"READSB_PROTO_PATH=/opt/readsb-protobuf",
"GAIN_VALUE_FILE=/tmp/.gain_current",
"READSB_NET_BEAST_OUTPUT_PORT=30005",
"READSB_NET_SBS_OUTPUT_PORT=30003",
"READSB_NET_RAW_OUTPUT_PORT=30002",
"PROMETHEUSPORT=9273",
"PROMETHEUSPATH=/metrics"
],
"Cmd": null,
"Healthcheck": {
"Test": [
"CMD-SHELL",
"/scripts/healthcheck.sh"
],
"Interval": 600000000000,
"StartPeriod": 3600000000000
},
"Image": "",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": [
"/init"
],
"OnBuild": null,
"Labels": {
"org.opencontainers.image.created": "2025-03-22T18:26:07.960Z",
"org.opencontainers.image.description": "Multi-architecture readsb-protobuf container with support for RTLSDR, bladeRF and plutoSDR (x86_64, arm32v7, arm64v8)",
"org.opencontainers.image.licenses": "",
"org.opencontainers.image.revision": "81daff454198ee29bdd8c9bac62f9e7933746d39",
"org.opencontainers.image.source": "https://github.com/sdr-enthusiasts/docker-readsb-protobuf",
"org.opencontainers.image.title": "docker-readsb-protobuf",
"org.opencontainers.image.url": "https://github.com/sdr-enthusiasts/docker-readsb-protobuf",
"org.opencontainers.image.version": "main"
},
"Shell": [
"/bin/bash",
"-o",
"pipefail",
"-c"
]
},
"Architecture": "amd64",
"Os": "linux",
"Size": 645106242,
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/6705f18e01ad294677e5bd2c309a2578738827fa3c2dee67de4f411407276ba5/diff:/var/lib/docker/overlay2/9ae26e4d9649c5593fc9b512536e22834ac0b7901fba9f16608a403d6fc3dd1d/diff:/var/lib/docker/overlay2/e255cb10e634ecf1a2fa5810285d42e8bb6e196d7a05c17c75f54213f226d057/diff:/var/lib/docker/overlay2/88cdd3dcb739b59953f156c0e43d1e9b89db688728facf2f0e800556166f6307/diff:/var/lib/docker/overlay2/103794f1a0d7c601492004ca1ff4ed8651d5146be65bed5380da12f3e88d0445/diff:/var/lib/docker/overlay2/1f8ebc1835d82520fa316c5bb2eb4fdbd77afc9b86d65d13f08fd4e5f37f3318/diff",
"MergedDir": "/var/lib/docker/overlay2/ebcbab2a088dfc0908cc5c55cb3d9717de99081ec48f5f9d7b200d67ca303690/merged",
"UpperDir": "/var/lib/docker/overlay2/ebcbab2a088dfc0908cc5c55cb3d9717de99081ec48f5f9d7b200d67ca303690/diff",
"WorkDir": "/var/lib/docker/overlay2/ebcbab2a088dfc0908cc5c55cb3d9717de99081ec48f5f9d7b200d67ca303690/work"
},
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:1287fbecdfcce6ee8cf2436e5b9e9d86a4648db2d91080377d499737f1b307f3",
"sha256:df5864cf2b0bd837b8e38c64bebbce264035c04c726eb9b294fd5dad81a261dc",
"sha256:7a2957cca413d47f45d8449c920313614b715f884ba5d32feb02e741cc0c9f57",
"sha256:a055726188ed7d696659c9c3a1839cc061f224429ec3d02daa36caa6e8712504",
"sha256:91b84db80f28725266f0435f7567a702b7f030b5cb94b0dabc7e3120f4aeb5d0",
"sha256:3a8b41829fa026982c559a9714e01b8c4f046800cddf6a389a143e310e89f58c",
"sha256:e4a59f31f012858d7844588a4e312d41160d176abca34f28675f0951ac1746de"
]
},
"Metadata": {
"LastTagTime": "2025-10-21T21:45:42.826810231+08:00"
}
}