mirror of
https://github.com/librespeed/speedtest.git
synced 2026-08-04 14:48:38 +00:00
Merge pull request #678 from librespeed/fix-docker-images
alpine/debian docker image tests and fixes
This commit is contained in:
commit
c0c2a41c23
6 changed files with 160 additions and 47 deletions
25
Dockerfile
25
Dockerfile
|
|
@ -1,20 +1,13 @@
|
|||
FROM php:8-apache
|
||||
|
||||
# use docker-php-extension-installer for automatically get the right packages installed
|
||||
ADD --chmod=0755 https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/
|
||||
|
||||
|
||||
# Install extensions
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
libfreetype6-dev \
|
||||
libjpeg62-turbo-dev \
|
||||
libpng-dev \
|
||||
libpq-dev \
|
||||
&& docker-php-ext-install -j$(nproc) iconv \
|
||||
&& docker-php-ext-configure gd --with-freetype=/usr/include/ --with-jpeg=/usr/include/ \
|
||||
&& docker-php-ext-configure pgsql -with-pgsql=/usr/local/pgsql \
|
||||
&& docker-php-ext-install -j$(nproc) gd pdo pdo_mysql pdo_pgsql pgsql \
|
||||
&& rm -f /usr/src/php.tar.xz /usr/src/php.tar.xz.asc \
|
||||
&& apt-get remove -y libfreetype6-dev \
|
||||
libjpeg62-turbo-dev \
|
||||
libpng-dev \
|
||||
libpq-dev \
|
||||
RUN install-php-extensions iconv gd pdo pdo_mysql pdo_pgsql pgsql
|
||||
|
||||
RUN rm -f /usr/src/php.tar.xz /usr/src/php.tar.xz.asc \
|
||||
&& apt autoremove -y \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
|
|
@ -42,11 +35,11 @@ ENV PASSWORD=password
|
|||
ENV TELEMETRY=false
|
||||
ENV ENABLE_ID_OBFUSCATION=false
|
||||
ENV REDACT_IP_ADDRESSES=false
|
||||
ENV WEBPORT=80
|
||||
ENV WEBPORT=8080
|
||||
|
||||
# https://httpd.apache.org/docs/2.4/stopping.html#gracefulstop
|
||||
STOPSIGNAL SIGWINCH
|
||||
|
||||
# Final touches
|
||||
EXPOSE 80
|
||||
EXPOSE ${WEBPORT}
|
||||
CMD ["bash", "/entrypoint.sh"]
|
||||
|
|
|
|||
|
|
@ -1,26 +1,26 @@
|
|||
FROM php:8-alpine
|
||||
|
||||
# Install extensions
|
||||
RUN apk add --quiet --no-cache \
|
||||
bash \
|
||||
apache2 \
|
||||
apache2-ssl \
|
||||
php83-apache2 \
|
||||
php83-ctype \
|
||||
php83-openssl \
|
||||
freetype-dev \
|
||||
libjpeg-turbo-dev \
|
||||
libpng-dev \
|
||||
libpq-dev \
|
||||
&& docker-php-ext-configure gd --with-freetype=/usr/include/ --with-jpeg=/usr/include/ \
|
||||
&& docker-php-ext-configure pgsql -with-pgsql=/usr/local/pgsql \
|
||||
&& docker-php-ext-install -j$(nproc) gd pdo pdo_mysql pdo_pgsql pgsql \
|
||||
&& rm -f /usr/src/php.tar.xz /usr/src/php.tar.xz.asc \
|
||||
&& apk del --quiet --no-cache \
|
||||
freetype-dev \
|
||||
libjpeg-turbo-dev \
|
||||
libpng-dev \
|
||||
libpq-dev
|
||||
php-apache2 \
|
||||
php-ctype \
|
||||
php-gd \
|
||||
php-openssl \
|
||||
php-pdo \
|
||||
php-pdo_mysql \
|
||||
php-pdo_pgsql \
|
||||
php-pdo_sqlite \
|
||||
php-pgsql \
|
||||
php-session \
|
||||
php-sqlite3
|
||||
|
||||
# use docker-php-extension-installer for automatically get the right packages installed
|
||||
ADD --chmod=0755 https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/
|
||||
|
||||
|
||||
|
||||
# Install extensions
|
||||
RUN install-php-extensions iconv gd pdo pdo_mysql pdo_pgsql pgsql
|
||||
|
||||
RUN ln -sf /dev/stdout /var/log/apache2/access.log && \
|
||||
ln -sf /dev/stderr /var/log/apache2/error.log
|
||||
|
|
@ -49,11 +49,13 @@ ENV PASSWORD=password
|
|||
ENV TELEMETRY=false
|
||||
ENV ENABLE_ID_OBFUSCATION=false
|
||||
ENV REDACT_IP_ADDRESSES=false
|
||||
ENV WEBPORT=80
|
||||
ENV WEBPORT=8080
|
||||
|
||||
# https://httpd.apache.org/docs/2.4/stopping.html#gracefulstop
|
||||
STOPSIGNAL SIGWINCH
|
||||
|
||||
WORKDIR /var/www/html
|
||||
|
||||
# Final touches
|
||||
EXPOSE 80
|
||||
EXPOSE ${WEBPORT}
|
||||
CMD ["bash", "/entrypoint.sh"]
|
||||
|
|
|
|||
|
|
@ -3,6 +3,10 @@
|
|||
set -e
|
||||
set -x
|
||||
|
||||
is_alpine() {
|
||||
[ -f /etc/alpine-release ]
|
||||
}
|
||||
|
||||
# Cleanup
|
||||
rm -rf /var/www/html/*
|
||||
|
||||
|
|
@ -13,7 +17,7 @@ cp /speedtest/*.js /var/www/html/
|
|||
cp /speedtest/favicon.ico /var/www/html/
|
||||
|
||||
# Set custom webroot on alpine
|
||||
if [ -f /etc/alpine-release ]; then
|
||||
if is_alpine; then
|
||||
sed -i "s#\"/var/www/localhost/htdocs\"#\"/var/www/html\"#g" /etc/apache2/httpd.conf
|
||||
fi
|
||||
|
||||
|
|
@ -38,7 +42,7 @@ if [ "$MODE" != "backend" ]; then
|
|||
fi
|
||||
|
||||
# Apply Telemetry settings when running in standalone or frontend mode and telemetry is enabled
|
||||
if [[ "$TELEMETRY" == "true" && ( "$MODE" == "frontend" || "$MODE" == "standalone" || "$MODE" == "dual" ) ]]; then
|
||||
if [[ "$TELEMETRY" == "true" && ("$MODE" == "frontend" || "$MODE" == "standalone" || "$MODE" == "dual") ]]; then
|
||||
cp -r /speedtest/results /var/www/html/results
|
||||
|
||||
if [ "$MODE" == "frontend" ]; then
|
||||
|
|
@ -46,16 +50,16 @@ if [[ "$TELEMETRY" == "true" && ( "$MODE" == "frontend" || "$MODE" == "standalon
|
|||
cp /speedtest/backend/getIP_util.php /var/www/html/backend
|
||||
fi
|
||||
|
||||
if [ "$DB_TYPE" == "mysql" ]; then
|
||||
if [ "$DB_TYPE" == "mysql" ]; then
|
||||
sed -i 's/$db_type = '\''.*'\''/$db_type = '\'$DB_TYPE\''/g' /var/www/html/results/telemetry_settings.php
|
||||
sed -i 's/$MySql_username = '\''.*'\''/$MySql_username = '\'$DB_USERNAME\''/g' /var/www/html/results/telemetry_settings.php
|
||||
sed -i 's/$MySql_password = '\''.*'\''/$MySql_password = '\'$DB_PASSWORD\''/g' /var/www/html/results/telemetry_settings.php
|
||||
sed -i 's/$MySql_hostname = '\''.*'\''/$MySql_hostname = '\'$DB_HOSTNAME\''/g' /var/www/html/results/telemetry_settings.php
|
||||
sed -i 's/$MySql_databasename = '\''.*'\''/$MySql_databasename = '\'$DB_NAME\''/g' /var/www/html/results/telemetry_settings.php
|
||||
if [ "$DB_PORT" != "" ]; then
|
||||
if [ "$DB_PORT" != "" ]; then
|
||||
sed -i 's/$MySql_port = '\''.*'\''/$MySql_port = '\'$DB_PORT\''/g' /var/www/html/results/telemetry_settings.php
|
||||
fi
|
||||
elif [ "$DB_TYPE" == "postgresql" ]; then
|
||||
elif [ "$DB_TYPE" == "postgresql" ]; then
|
||||
sed -i 's/$db_type = '\''.*'\''/$db_type = '\'$DB_TYPE\''/g' /var/www/html/results/telemetry_settings.php
|
||||
sed -i 's/$PostgreSql_username = '\''.*'\''/$PostgreSql_username = '\'$DB_USERNAME\''/g' /var/www/html/results/telemetry_settings.php
|
||||
sed -i 's/$PostgreSql_password = '\''.*'\''/$PostgreSql_password = '\'$DB_PASSWORD\''/g' /var/www/html/results/telemetry_settings.php
|
||||
|
|
@ -77,14 +81,22 @@ if [[ "$TELEMETRY" == "true" && ( "$MODE" == "frontend" || "$MODE" == "standalon
|
|||
fi
|
||||
|
||||
mkdir -p /database/
|
||||
chown www-data /database/
|
||||
if is_alpine; then
|
||||
chown apache /database/
|
||||
else
|
||||
chown www-data /database/
|
||||
fi
|
||||
fi
|
||||
|
||||
chown -R www-data /var/www/html/*
|
||||
if is_alpine; then
|
||||
chown -R apache /var/www/html/*
|
||||
else
|
||||
chown -R www-data /var/www/html/*
|
||||
fi
|
||||
|
||||
# Allow selection of Apache port for network_mode: host
|
||||
if [ "$WEBPORT" != "80" ]; then
|
||||
if [ -f /etc/alpine-release ]; then
|
||||
if is_alpine; then
|
||||
sed -i "s/^Listen 80\$/Listen $WEBPORT/g" /etc/apache2/httpd.conf
|
||||
else
|
||||
sed -i "s/^Listen 80\$/Listen $WEBPORT/g" /etc/apache2/ports.conf
|
||||
|
|
@ -95,7 +107,7 @@ fi
|
|||
echo "Done, Starting APACHE"
|
||||
|
||||
# This runs apache
|
||||
if [ -f /etc/alpine-release ]; then
|
||||
if is_alpine; then
|
||||
exec httpd -DFOREGROUND
|
||||
else
|
||||
exec apache2-foreground
|
||||
|
|
|
|||
1
docker/test/.env
Normal file
1
docker/test/.env
Normal file
|
|
@ -0,0 +1 @@
|
|||
COMPOSE_PROJECT_NAME=speedtest-test
|
||||
104
docker/test/docker-compose.yml
Normal file
104
docker/test/docker-compose.yml
Normal file
|
|
@ -0,0 +1,104 @@
|
|||
## this is a docker compose file used to test all scenarios
|
||||
## do not use it in production
|
||||
|
||||
services:
|
||||
###################### POSTGRESQL ################################
|
||||
pg:
|
||||
image: postgres:alpine
|
||||
environment:
|
||||
POSTGRES_PASSWORD: Not4SecureProduction
|
||||
POSTGRES_USER: librespeed
|
||||
volumes:
|
||||
# mount init script from source to create database tables
|
||||
- ../../results/telemetry_postgresql.sql:/docker-entrypoint-initdb.d/01-init.sql
|
||||
|
||||
speedtest-debian-pg:
|
||||
build:
|
||||
context: ../..
|
||||
dockerfile: Dockerfile
|
||||
environment: &env_vars_pg
|
||||
- PASSWORD=gimmeTheStats1337
|
||||
- DB_HOSTNAME=pg
|
||||
- DB_NAME=librespeed
|
||||
- DB_PASSWORD=Not4SecureProduction
|
||||
- DB_TYPE=postgresql
|
||||
- DB_USERNAME=librespeed
|
||||
- EMAIL=test@example.com
|
||||
- ENABLE_ID_OBFUSCATION=true
|
||||
- MODE=standalone
|
||||
- REDACT_IP_ADDRESSES=true
|
||||
- TELEMETRY=true
|
||||
ports:
|
||||
- 9123:8080
|
||||
|
||||
speedtest-alpine-pg:
|
||||
build:
|
||||
context: ../..
|
||||
dockerfile: Dockerfile.alpine
|
||||
environment: *env_vars_pg
|
||||
ports:
|
||||
- 9124:8080
|
||||
|
||||
####################### MYSQL ##############################
|
||||
|
||||
mysql:
|
||||
image: mysql:lts
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: Not4SecureProduction
|
||||
MYSQL_USER: librespeed
|
||||
MYSQL_PASSWORD: Not4SecureProduction
|
||||
MYSQL_DATABASE: librespeed
|
||||
volumes:
|
||||
# mount init script from source to create database tables
|
||||
- ../../results/telemetry_mysql.sql:/docker-entrypoint-initdb.d/01-init.sql
|
||||
|
||||
speedtest-debian-mysql:
|
||||
# check at http://localhost:9125/results/sanitycheck.php
|
||||
build:
|
||||
context: ../..
|
||||
dockerfile: Dockerfile
|
||||
environment: &env_vars_mysql
|
||||
- PASSWORD=gimmeTheStats1337
|
||||
- DB_HOSTNAME=mysql
|
||||
- DB_NAME=librespeed
|
||||
- DB_PASSWORD=Not4SecureProduction
|
||||
- DB_TYPE=mysql
|
||||
- DB_USERNAME=librespeed
|
||||
- EMAIL=test@example.com
|
||||
- ENABLE_ID_OBFUSCATION=true
|
||||
- MODE=standalone
|
||||
- REDACT_IP_ADDRESSES=true
|
||||
- TELEMETRY=true
|
||||
ports:
|
||||
- 9125:8080
|
||||
speedtest-alpine-mysql:
|
||||
build:
|
||||
context: ../..
|
||||
dockerfile: Dockerfile.alpine
|
||||
environment: *env_vars_mysql
|
||||
ports:
|
||||
- 9126:8080
|
||||
|
||||
###### SQLITE ######
|
||||
speedtest-debian-sqlite:
|
||||
# check at http://localhost:9125/results/sanitycheck.php
|
||||
build:
|
||||
context: ../..
|
||||
dockerfile: Dockerfile
|
||||
environment: &env_vars_sqlite
|
||||
- PASSWORD=gimmeTheStats1337
|
||||
- EMAIL=test@example.com
|
||||
- ENABLE_ID_OBFUSCATION=true
|
||||
- MODE=standalone
|
||||
- REDACT_IP_ADDRESSES=true
|
||||
- TELEMETRY=true
|
||||
ports:
|
||||
- 9127:8080
|
||||
|
||||
speedtest-alpine-sqlite:
|
||||
build:
|
||||
context: ../..
|
||||
dockerfile: Dockerfile.alpine
|
||||
environment: *env_vars_sqlite
|
||||
ports:
|
||||
- 9128:8080
|
||||
|
|
@ -9,7 +9,7 @@
|
|||
function I(i){return document.getElementById(i);}
|
||||
|
||||
//LIST OF TEST SERVERS. See documentation for details if needed
|
||||
<?php
|
||||
<?php
|
||||
$mode=getenv("MODE");
|
||||
if($mode=="standalone" || $mode=="dual"){ ?>
|
||||
var SPEEDTEST_SERVERS=[];
|
||||
|
|
@ -400,6 +400,7 @@ function initUI(){
|
|||
html,body,#loading{
|
||||
background:#202020;
|
||||
color:#F4F4F4;
|
||||
color-scheme:dark;
|
||||
}
|
||||
h1{
|
||||
color:#E0E0E0;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue