40 lines
1.4 KiB
Docker
40 lines
1.4 KiB
Docker
FROM debian:stable-slim
|
|
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
|
|
# Install required packages: curl, cron, busybox (httpd), ca-certificates
|
|
RUN apt-get update \
|
|
&& apt-get install -y --no-install-recommends curl cron busybox ca-certificates gnupg dirmngr \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Install Ookla Speedtest CLI via packagecloud repository
|
|
RUN curl -s https://packagecloud.io/install/repositories/ookla/speedtest-cli/script.deb.sh | bash \
|
|
&& apt-get update \
|
|
&& apt-get install -y --no-install-recommends speedtest \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Create web root and data directories
|
|
RUN mkdir -p /var/www && mkdir -p /var/www/data/speed
|
|
WORKDIR /var/www
|
|
|
|
# Copy web assets and scripts
|
|
COPY index.html /var/www/index.html
|
|
COPY run_speed_test.sh /usr/local/bin/run_speed_test.sh
|
|
COPY start.sh /usr/local/bin/start.sh
|
|
|
|
# Ensure scripts are executable
|
|
RUN chmod +x /usr/local/bin/run_speed_test.sh /usr/local/bin/start.sh
|
|
|
|
# Add cron job to run every hour at minute 0
|
|
RUN printf "0 * * * * root /usr/local/bin/run_speed_test.sh >> /var/log/cron.log 2>&1\n" > /etc/cron.d/speedtest-cron \
|
|
&& chmod 0644 /etc/cron.d/speedtest-cron
|
|
|
|
# Expose default HTTP port and declare data volume
|
|
VOLUME ["/var/www/data/speed"]
|
|
# Default port for http server inside container. You can override at runtime with -e PORT=xxxx
|
|
ENV PORT=8080
|
|
EXPOSE 8080
|
|
|
|
# Start script will launch cron and the HTTP server
|
|
CMD ["/usr/local/bin/start.sh"]
|