Skip to content

Commit

Permalink
merge fixed docker images
Browse files Browse the repository at this point in the history
  • Loading branch information
sstidl committed Oct 26, 2024
1 parent 66e967a commit 4b6a8b8
Show file tree
Hide file tree
Showing 5 changed files with 158 additions and 48 deletions.
25 changes: 9 additions & 16 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -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/*

Expand Down Expand Up @@ -43,11 +36,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"]
46 changes: 23 additions & 23 deletions Dockerfile.alpine
Original file line number Diff line number Diff line change
@@ -1,28 +1,26 @@
FROM php:8-alpine

# Install extensions
RUN apk add --quiet --no-cache \
bash \
apache2 \
apache2-ssl \
php83-apache2 \
php83-ctype \
php83-openssl \
php-gd php-session php-sqlite3 \
php-pdo php-pgsql php83-pdo_mysql php-pdo_pgsql php-pdo_sqlite \
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
Expand Down Expand Up @@ -54,11 +52,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"]
30 changes: 21 additions & 9 deletions docker/entrypoint.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@
set -e
set -x

is_alpine() {
[ -f /etc/alpine-release ]
}

# Cleanup
rm -rf /var/www/html/*

Expand All @@ -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

Expand All @@ -39,24 +43,24 @@ 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
mkdir /var/www/html/backend
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
Expand All @@ -78,14 +82,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
Expand All @@ -96,7 +108,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
Expand Down
1 change: 1 addition & 0 deletions docker/test/.env
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
COMPOSE_PROJECT_NAME=speedtest-test
104 changes: 104 additions & 0 deletions docker/test/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -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 protected]
- 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 protected]
- 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 protected]
- 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

0 comments on commit 4b6a8b8

Please sign in to comment.