134 lines
3.4 KiB
Bash
Executable File
134 lines
3.4 KiB
Bash
Executable File
#!/bin/bash
|
|
set -e
|
|
|
|
IFS='
|
|
'
|
|
|
|
_template() {
|
|
sed -e 's/\\/\\\\/g' $1 | sed -E ':a;N;$!ba;s/\r{0,1}\n/%0A/g'
|
|
}
|
|
|
|
declare -A php_version=(
|
|
[default]='7.3'
|
|
)
|
|
|
|
declare -A cmd=(
|
|
[apache]='apache2-foreground'
|
|
[fpm]='php-fpm'
|
|
[fpm-alpine]='php-fpm'
|
|
)
|
|
|
|
declare -A base=(
|
|
[apache]='debian'
|
|
[fpm]='debian'
|
|
[fpm-alpine]='alpine'
|
|
)
|
|
|
|
declare -A document=(
|
|
[apache]=$(_template .templates/Dockerfile-apache.template)
|
|
[fpm]=''
|
|
[fpm-alpine]=''
|
|
)
|
|
|
|
label=$(_template .templates/Dockerfile-label.template)
|
|
|
|
echo Initialisation
|
|
|
|
apcu_version="$(
|
|
git ls-remote --tags https://github.com/krakjoe/apcu.git \
|
|
| cut -d/ -f3 \
|
|
| grep -vE -- '-rc|-b' \
|
|
| sed -E 's/^v//' \
|
|
| sort -V \
|
|
| tail -1
|
|
)"
|
|
echo " APCu version: $apcu_version"
|
|
|
|
memcached_version="$(
|
|
git ls-remote --tags https://github.com/php-memcached-dev/php-memcached.git \
|
|
| cut -d/ -f3 \
|
|
| grep -vE -- '-rc|-b' \
|
|
| sed -E 's/^[rv]//' \
|
|
| sort -V \
|
|
| tail -1
|
|
)"
|
|
echo " Memcached version: $memcached_version"
|
|
|
|
redis_version="$(
|
|
git ls-remote --tags https://github.com/phpredis/phpredis.git \
|
|
| cut -d/ -f3 \
|
|
| grep -viE '[a-z]' \
|
|
| tr -d '^{}' \
|
|
| sort -V \
|
|
| tail -1
|
|
)"
|
|
echo " Redis version: $redis_version"
|
|
|
|
imagick_version="$(
|
|
git ls-remote --tags https://github.com/mkoppanen/imagick.git \
|
|
| cut -d/ -f3 \
|
|
| grep -viE '[a-z]' \
|
|
| tr -d '^{}' \
|
|
| sort -V \
|
|
| tail -1
|
|
)"
|
|
echo " Imagick version: $imagick_version"
|
|
|
|
declare -A pecl_versions=(
|
|
[APCu]="$apcu_version"
|
|
[memcached]="$memcached_version"
|
|
[redis]="$redis_version"
|
|
[imagick]="$imagick_version"
|
|
)
|
|
|
|
_githubapi() {
|
|
if [ -n "${GITHUB_TOKEN:-}" ]; then
|
|
curl -fsSL -H "Authorization: token $GITHUB_TOKEN" $1;
|
|
else
|
|
curl -fsSL $1;
|
|
fi
|
|
}
|
|
|
|
version="$(_githubapi 'https://api.github.com/repos/monicahq/monica/releases/latest' | jq -r '.tag_name')"
|
|
echo " Monica version: $version"
|
|
commit="$(_githubapi 'https://api.github.com/repos/monicahq/monica/tags' | jq -r 'map(select(.name | contains ("'$version'"))) | .[].commit.sha')"
|
|
echo " Commit: $commit"
|
|
|
|
head=$(_template .templates/Dockerfile-head.template)
|
|
foot=$(_template .templates/Dockerfile-foot.template)
|
|
extra=$(_template .templates/Dockerfile-extra.template)
|
|
install=$(_template .templates/Dockerfile-install.template)
|
|
|
|
for variant in apache fpm fpm-alpine; do
|
|
echo Generating $variant variant...
|
|
rm -rf $variant
|
|
mkdir -p $variant
|
|
phpVersion=${php_version[$version]-${php_version[default]}}
|
|
|
|
template="Dockerfile-${base[$variant]}.template"
|
|
|
|
sed -e '
|
|
s@%%HEAD%%@'"$head"'@;
|
|
s@%%FOOT%%@'"$foot"'@;
|
|
s@%%EXTRA_INSTALL%%@'"$extra"'@;
|
|
s@%%INSTALL%%@'"$install"'@;
|
|
s/%%VARIANT%%/'"$variant"'/;
|
|
s/%%PHP_VERSION%%/'"$phpVersion"'/;
|
|
s#%%LABEL%%#'"$label"'#;
|
|
s/%%VERSION%%/'"$version"'/g;
|
|
s/%%COMMIT%%/'"$commit"'/;
|
|
s/%%CMD%%/'"${cmd[$variant]}"'/;
|
|
s#%%APACHE_DOCUMENT%%#'"${document[$variant]}"'#;
|
|
s/%%APCU_VERSION%%/'"${pecl_versions[APCu]}"'/;
|
|
s/%%MEMCACHED_VERSION%%/'"${pecl_versions[memcached]}"'/;
|
|
s/%%REDIS_VERSION%%/'"${pecl_versions[redis]}"'/;
|
|
s/%%IMAGICK_VERSION%%/'"${pecl_versions[imagick]}"'/;
|
|
' \
|
|
-e "s/%0A/\n/g;" \
|
|
$template > "$variant/Dockerfile"
|
|
|
|
for file in entrypoint cron queue; do
|
|
cp docker-$file.sh $variant/$file.sh
|
|
done
|
|
done
|