Added docker files
This commit is contained in:
commit
2021981cc8
45
Dockerfile
Normal file
45
Dockerfile
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
FROM alpine:3.16
|
||||||
|
LABEL maintainer="JulianPrieber"
|
||||||
|
LABEL description="LittleLink Custom Docker"
|
||||||
|
|
||||||
|
# Setup apache and php
|
||||||
|
RUN apk --no-cache --update \
|
||||||
|
add apache2 \
|
||||||
|
apache2-ssl \
|
||||||
|
curl \
|
||||||
|
php8-apache2 \
|
||||||
|
php8-bcmath \
|
||||||
|
php8-bz2 \
|
||||||
|
php8-calendar \
|
||||||
|
php8-common \
|
||||||
|
php8-ctype \
|
||||||
|
php8-curl \
|
||||||
|
php8-dom \
|
||||||
|
php8-gd \
|
||||||
|
php8-iconv \
|
||||||
|
php8-mbstring \
|
||||||
|
php8-mysqli \
|
||||||
|
php8-mysqlnd \
|
||||||
|
php8-openssl \
|
||||||
|
php8-pdo_mysql \
|
||||||
|
php8-pdo_pgsql \
|
||||||
|
php8-pdo_sqlite \
|
||||||
|
php8-phar \
|
||||||
|
php8-session \
|
||||||
|
php8-xml \
|
||||||
|
php8-tokenizer \
|
||||||
|
php8-zip \
|
||||||
|
&& mkdir /htdocs
|
||||||
|
|
||||||
|
COPY littlelink-custom /htdocs
|
||||||
|
RUN chown -R apache:apache /htdocs
|
||||||
|
RUN find /htdocs -type d -print0 | xargs -0 chmod 0755
|
||||||
|
RUN find /htdocs -type f -print0 | xargs -0 chmod 0644
|
||||||
|
|
||||||
|
EXPOSE 80 443
|
||||||
|
|
||||||
|
ADD docker-entrypoint.sh /
|
||||||
|
|
||||||
|
HEALTHCHECK CMD wget -q --no-cache --spider localhost
|
||||||
|
|
||||||
|
ENTRYPOINT ["/docker-entrypoint.sh"]
|
77
autotest.sh
Normal file
77
autotest.sh
Normal file
|
@ -0,0 +1,77 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Exit on non defined variables and on non zero exit codes
|
||||||
|
set -eu
|
||||||
|
|
||||||
|
echo 'Building the container'
|
||||||
|
|
||||||
|
docker build ./ -t alpine-apache-php-ci:latest
|
||||||
|
|
||||||
|
NET="${DOCKER_NETWORK:-alpine-apache-php-autotest}"
|
||||||
|
|
||||||
|
# use failure to switch on create
|
||||||
|
docker network inspect ${NET} 1>/dev/null 2> /dev/null || docker network create ${NET}
|
||||||
|
|
||||||
|
echo 'Preparing test folder'
|
||||||
|
|
||||||
|
TMP_DIR="$(mktemp -d --suffix alpine-apache-php)"
|
||||||
|
|
||||||
|
printf "<?php \n\
|
||||||
|
echo 'PHP: ' . PHP_MAJOR_VERSION . PHP_EOL;\n\
|
||||||
|
echo 'Admin: ' . \$_SERVER['SERVER_ADMIN'] . PHP_EOL;\n\
|
||||||
|
echo 'Host: ' . \$_SERVER['SERVER_NAME'] . PHP_EOL;\n\
|
||||||
|
echo 'Memory-limit: ' . ini_get('memory_limit') . PHP_EOL;\n\
|
||||||
|
echo 'Timezone: ' . ini_get('date.timezone') . PHP_EOL;\n\
|
||||||
|
" > "${TMP_DIR}/index.php"
|
||||||
|
|
||||||
|
chmod 777 "${TMP_DIR}"
|
||||||
|
chmod 666 "${TMP_DIR}/index.php"
|
||||||
|
|
||||||
|
echo 'Running test containers'
|
||||||
|
|
||||||
|
# stop if exists or silently exit
|
||||||
|
docker stop alpine-apache-php-test 1>/dev/null 2> /dev/null || echo '' >/dev/null
|
||||||
|
|
||||||
|
docker run --rm --detach \
|
||||||
|
--name alpine-apache-php-test \
|
||||||
|
--network ${NET} \
|
||||||
|
--volume ${TMP_DIR}:/htdocs \
|
||||||
|
--env HTTP_SERVER_NAME="www.example.xyz" \
|
||||||
|
--env HTTPS_SERVER_NAME="www.example.xyz" \
|
||||||
|
--env SERVER_ADMIN="admin@example.xyz" \
|
||||||
|
--env TZ="Europe/Paris" \
|
||||||
|
--env PHP_MEMORY_LIMIT="512M" \
|
||||||
|
alpine-apache-php-ci:latest 1>/dev/null
|
||||||
|
|
||||||
|
|
||||||
|
# stop if exists or silently exit
|
||||||
|
docker stop alpine-apache-php-test-normal 1>/dev/null 2> /dev/null || echo '' >/dev/null
|
||||||
|
|
||||||
|
docker run --rm --detach \
|
||||||
|
--name alpine-apache-php-test-normal \
|
||||||
|
--network ${NET} \
|
||||||
|
--volume ${TMP_DIR}:/htdocs \
|
||||||
|
alpine-apache-php-ci:latest 1>/dev/null
|
||||||
|
|
||||||
|
echo ''
|
||||||
|
echo 'Running custom tests'
|
||||||
|
|
||||||
|
docker run --rm --network ${NET} curlimages/curl:latest -s -k https://alpine-apache-php-test -H 'Host: www.example.xyz'
|
||||||
|
docker run --rm --network ${NET} curlimages/curl:latest -s http://alpine-apache-php-test
|
||||||
|
docker run --rm --network ${NET} curlimages/curl:latest -s -k https://alpine-apache-php-test
|
||||||
|
|
||||||
|
echo ''
|
||||||
|
echo 'Running normal tests'
|
||||||
|
|
||||||
|
docker run --rm --network ${NET} curlimages/curl:latest -s -k https://alpine-apache-php-test-normal -H 'Host: www.example.xyz'
|
||||||
|
docker run --rm --network ${NET} curlimages/curl:latest -s http://alpine-apache-php-test-normal
|
||||||
|
docker run --rm --network ${NET} curlimages/curl:latest -s -k https://alpine-apache-php-test-normal
|
||||||
|
|
||||||
|
echo ''
|
||||||
|
echo 'Cleaning up'
|
||||||
|
docker stop alpine-apache-php-test 1>/dev/null
|
||||||
|
docker stop alpine-apache-php-test-normal 1>/dev/null
|
||||||
|
docker network rm ${NET} 1>/dev/null
|
||||||
|
|
||||||
|
rm "${TMP_DIR}/index.php"
|
||||||
|
rmdir "${TMP_DIR}"
|
47
docker-entrypoint.sh
Normal file
47
docker-entrypoint.sh
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Exit on non defined variables and on non zero exit codes
|
||||||
|
set -eu
|
||||||
|
|
||||||
|
SERVER_ADMIN="${SERVER_ADMIN:-you@example.com}"
|
||||||
|
HTTP_SERVER_NAME="${HTTP_SERVER_NAME:-www.example.com}"
|
||||||
|
HTTPS_SERVER_NAME="${HTTPS_SERVER_NAME:-www.example.com}"
|
||||||
|
LOG_LEVEL="${LOG_LEVEL:-info}"
|
||||||
|
TZ="${TZ:-UTC}"
|
||||||
|
PHP_MEMORY_LIMIT="${PHP_MEMORY_LIMIT:-256M}"
|
||||||
|
|
||||||
|
echo 'Updating configurations'
|
||||||
|
|
||||||
|
# Change Server Admin, Name, Document Root
|
||||||
|
sed -i "s/ServerAdmin\ you@example.com/ServerAdmin\ ${SERVER_ADMIN}/" /etc/apache2/httpd.conf
|
||||||
|
sed -i "s/#ServerName\ www.example.com:80/ServerName\ ${HTTP_SERVER_NAME}/" /etc/apache2/httpd.conf
|
||||||
|
sed -i 's#^DocumentRoot ".*#DocumentRoot "/htdocs"#g' /etc/apache2/httpd.conf
|
||||||
|
sed -i 's#Directory "/var/www/localhost/htdocs"#Directory "/htdocs"#g' /etc/apache2/httpd.conf
|
||||||
|
sed -i 's#AllowOverride None#AllowOverride All#' /etc/apache2/httpd.conf
|
||||||
|
|
||||||
|
# Change TransferLog after ErrorLog
|
||||||
|
sed -i 's#^ErrorLog .*#ErrorLog "/dev/stderr"\nTransferLog "/dev/stdout"#g' /etc/apache2/httpd.conf
|
||||||
|
sed -i 's#CustomLog .* combined#CustomLog "/dev/stdout" combined#g' /etc/apache2/httpd.conf
|
||||||
|
|
||||||
|
# SSL DocumentRoot and Log locations
|
||||||
|
sed -i 's#^ErrorLog .*#ErrorLog "/dev/stderr"#g' /etc/apache2/conf.d/ssl.conf
|
||||||
|
sed -i 's#^TransferLog .*#TransferLog "/dev/stdout"#g' /etc/apache2/conf.d/ssl.conf
|
||||||
|
sed -i 's#^DocumentRoot ".*#DocumentRoot "/htdocs"#g' /etc/apache2/conf.d/ssl.conf
|
||||||
|
sed -i "s/ServerAdmin\ you@example.com/ServerAdmin\ ${SERVER_ADMIN}/" /etc/apache2/conf.d/ssl.conf
|
||||||
|
sed -i "s/ServerName\ www.example.com:443/ServerName\ ${HTTPS_SERVER_NAME}/" /etc/apache2/conf.d/ssl.conf
|
||||||
|
|
||||||
|
# Re-define LogLevel
|
||||||
|
sed -i "s#^LogLevel .*#LogLevel ${LOG_LEVEL}#g" /etc/apache2/httpd.conf
|
||||||
|
|
||||||
|
# Enable commonly used apache modules
|
||||||
|
sed -i 's/#LoadModule\ rewrite_module/LoadModule\ rewrite_module/' /etc/apache2/httpd.conf
|
||||||
|
sed -i 's/#LoadModule\ deflate_module/LoadModule\ deflate_module/' /etc/apache2/httpd.conf
|
||||||
|
sed -i 's/#LoadModule\ expires_module/LoadModule\ expires_module/' /etc/apache2/httpd.conf
|
||||||
|
|
||||||
|
# Modify php memory limit and timezone
|
||||||
|
sed -i "s/memory_limit = .*/memory_limit = ${PHP_MEMORY_LIMIT}/" /etc/php8/php.ini
|
||||||
|
sed -i "s#^;date.timezone =\$#date.timezone = \"${TZ}\"#" /etc/php8/php.ini
|
||||||
|
|
||||||
|
echo 'Running Apache'
|
||||||
|
|
||||||
|
httpd -D FOREGROUND
|
Loading…
Reference in a new issue