docker-filebin/Dockerfile
2024-11-19 12:59:35 +01:00

150 lines
4.2 KiB
Docker

#
# Build image
#
FROM alpine:3.20 as builder
ARG FB_VERSION
ARG FB_SOURCE_URL="https://github.com/Bluewind/filebin"
ARG FB_CLONE_DEPTH=1
LABEL maintainer="Varakh <varakh@varakh.de>"
RUN mkdir -p /app
WORKDIR /app
RUN echo $FB_VERSION && \
echo $FB_SOURCE_URL && \
echo $FB_CLONE_DEPTH
RUN apk add --update --no-cache git && \
git config --global advice.detachedHead false && \
git clone --branch ${FB_VERSION} "${FB_SOURCE_URL}" --depth=${FB_CLONE_DEPTH} /app/fb_src && \
rm -rf /app/fb_src/.git
FROM alpine:3.20
COPY --from=builder /app/fb_src /var/www
LABEL maintainer="Varakh <varakh@varakh.de>" \
description="filebin" \
org.opencontainers.image.authors="Varakh" \
org.opencontainers.image.vendor="Varakh" \
org.opencontainers.image.title="filebin" \
org.opencontainers.image.description="filebin" \
org.opencontainers.image.base.name="alpine:3"
ENV RECONFIGURE=true \
MIGRATE=true \
PHP_MEMORY_LIMIT=512M \
MAX_UPLOAD=1024M \
PHP_MAX_FILE_UPLOAD=100 \
PHP_MAX_POST=1024M \
DB_DSN='' \
DB_HOST=localhost \
DB_PORT=5432 \
DB_DRIVER=postgre \
DB_NAME=fb \
DB_USER=fb \
DB_PASS=fb \
DB_PREFIX='' \
DB_PCONNECT='0' \
DB_DEBUG='1' \
DB_CHAR_SET=utf8 \
DB_COLLAT=utf8_bin \
DB_SWAP_PRE='' \
DB_ENCRYPT='0' \
DB_COMPRESS='0' \
DB_STRICTON='0' \
DB_SAVE_QUERIES='0' \
BASE_URL='' \
INDEX_PAGE='' \
ENCRYPTION_KEY='' \
CACHE_BACKEND=dummy \
EMAIL_FROM='' \
UPLOAD_MAX_SIZE=1073741824 \
UPLOAD_MAX_TEXT_SIZE=2097152 \
UPLOAD_MAX_AGE=432000 \
ACTIONS_MAX_AGE=86400 \
SMALL_UPLOAD_SIZE=5120 \
TARBALL_MAX_SIZE=1073741824 \
TARBALL_CACHE_TIME=300 \
MAX_INVITATION_KEYS=3 \
SMTP_ENABLED=false \
SMTP_PROTOCOL='smtp' \
SMTP_HOST='' \
SMTP_PORT=587 \
SMTP_CRYPTO='tls' \
SMTP_USER='' \
SMTP_PASS=''
ADD src/wait-for.sh /wait-for.sh
# install dependencies
RUN chmod -x /wait-for.sh && \
apk add --update --no-cache \
nginx \
s6 \
curl \
python3 \
py-pygments \
imagemagick \
ghostscript \
msmtp \
composer \
php83 \
php83-fpm \
php83-intl \
php83-curl \
php83-dom \
php83-pcntl \
php83-posix \
php83-session \
php83-gd \
php83-exif \
php83-phar \
php83-pdo \
php83-pgsql \
php83-pdo_pgsql \
php83-pdo_mysql \
php83-mysqli \
php83-fileinfo \
php83-mbstring \
php83-ctype \
php83-ldap \
php83-pecl-memcached \
memcached \
ca-certificates && \
rm -rf /var/cache/apk/* && \
apk add gnu-libiconv --update-cache --repository http://dl-cdn.alpinelinux.org/alpine/edge/community/ --allow-untrusted && \
# prepare www dir
cp -r /var/www/application/config/example/* /var/www/application/config && \
# set environments
sed -i "s|;*memory_limit =.*|memory_limit = ${PHP_MEMORY_LIMIT}|i" /etc/php83/php.ini && \
sed -i "s|;*upload_max_filesize =.*|upload_max_filesize = ${MAX_UPLOAD}|i" /etc/php83/php.ini && \
sed -i "s|;*max_file_uploads =.*|max_file_uploads = ${PHP_MAX_FILE_UPLOAD}|i" /etc/php83/php.ini && \
sed -i "s|;*post_max_size =.*|post_max_size = ${PHP_MAX_POST}|i" /etc/php83/php.ini && \
sed -i 's+.*sendmail_path =.*+sendmail_path = "/usr/bin/msmtp -C /var/www/msmtprc --logfile /var/www/msmtp.log -a filebinmail -t"+' /etc/php83/php.ini && \
# clean up and permissions
rm -rf /var/cache/apk/* && \
chown nobody:nginx -R /var/www && \
rm /usr/bin/php && \
ln -s /usr/bin/php83 /usr/bin/php
# Add nginx config
ADD src/filebin.nginx.conf /etc/nginx/nginx.conf
EXPOSE 80
# add templates for replace env variables in the application
ADD src/config/database.php.tpl /var/www/application/config/database.php.tpl
ADD src/config/config-local.php.tpl /var/www/application/config/config-local.php.tpl
ADD src/config/email.php.tpl /var/www/application/config/email.php.tpl
ADD src/crontab /etc/periodic/15min/crontab
ADD src/configure.php /configure.php
ADD src/configure-mail.sh /var/www/configure-mail.sh
# add overlay
ADD src/s6/ /etc/s6/
# expose start
CMD /usr/bin/php /configure.php && exec s6-svscan /etc/s6/