FROM alpine:3.13 LABEL maintainer="JJTC " ENV PPM_VERSION=2.2.1 \ PPM_HTTP_VERSION=2.0.6 \ COMPOSER_VERSION=2.0.11 \ BOOKSTACK=BookStack \ BOOKSTACK_VERSION=0.31.6 \ BOOKSTACK_HOME="/app" COPY entrypoint.sh /app/entrypoint.sh RUN set -ex \ && chmod +x /app/entrypoint.sh \ # ensure www-data user exists # 82 is the standard uid/gid for "www-data" in Alpine && addgroup -g 82 -S www-data \ && adduser -u 82 -D -S -G www-data www-data \ && addgroup -S bookstack \ && adduser -S -D -H -s /sbin/nologin -G bookstack -g bookstack bookstack \ && apk update \ && echo "Setting up PHP extensions" \ && apk add --no-cache \ curl \ multirun \ nginx \ tar \ php8 \ php8-cgi \ php8-ctype \ php8-curl \ php8-dom \ php8-exif \ php8-fileinfo \ php8-gd \ php8-iconv \ php8-intl \ php8-json \ php8-ldap \ php8-mbstring \ php8-opcache \ php8-openssl \ php8-pcntl \ php8-pdo_mysql \ php8-pecl-imagick \ php8-phar \ php8-posix \ php8-redis \ php8-session \ php8-simplexml \ php8-sockets \ php8-tokenizer \ php8-xml \ php8-xmlwriter \ php8-zip \ php8-zlib \ && echo "Setting up Composer" \ && ln -sf /usr/bin/php8 /usr/bin/php \ && curl https://getcomposer.org/download/$COMPOSER_VERSION/composer.phar -o /usr/bin/composer \ && chmod 0755 /usr/bin/composer \ && echo "Setting up PPM:" \ && mkdir -p /ppm/run \ && cd /ppm \ && chmod -R 777 run/ \ && composer require php-pm/php-pm:${PPM_VERSION} php-pm/httpkernel-adapter:${PPM_HTTP_VERSION} \ && chown www-data:www-data -R . \ && echo "Get BookStack:" \ && mkdir -p ${BOOKSTACK_HOME} \ && cd ${BOOKSTACK_HOME} \ && curl -LJO https://github.com/BookStackApp/BookStack/archive/v${BOOKSTACK_VERSION}.tar.gz \ && tar --strip-components=1 -xzf BookStack-${BOOKSTACK_VERSION}.tar.gz \ && rm -rf ${BOOKSTACK}-${BOOKSTACK_VERSION}.tar.gz .env.example .env.example.complete .gitattributes .github .gitignore .travis.yml tests/ public/index.php \ && ln -s init.php bootstrap/autoload.php \ && echo "Get Dependencies:" \ && composer install \ && echo "Changing ownership:" \ && chown bookstack:bookstack -R . \ && echo "Setting folder permissions for www-data:" \ && chown www-data:bookstack -R bootstrap/cache public/uploads storage \ && echo "Ensure www-data got access to Nginx folders:" \ && chown www-data:www-data -R /var/lib/nginx /var/log/nginx \ && echo "Giving all system users access to multirun:" \ && chmod 0755 /usr/bin/multirun USER www-data:www-data WORKDIR $BOOKSTACK_HOME EXPOSE 8080/tcp VOLUME ["$BOOKSTACK_HOME/public/uploads", "$BOOKSTACK_HOME/public/storage"] ENTRYPOINT ["./entrypoint.sh"]