ARG PHP_VERSION=7.4 # Get Invoice Ninja FROM alpine:latest as base ARG INVOICENINJA_VERSION RUN set -eux; \ apk add --no-cache \ curl \ mysql-client \ libarchive-tools; \ mkdir -p /var/www/app RUN curl -o /tmp/ninja.tar.gz -LJ0 https://github.com/invoiceninja/invoiceninja/tarball/v$INVOICENINJA_VERSION \ && bsdtar --strip-components=1 -C /var/www/app -xf /tmp/ninja.tar.gz \ && rm /tmp/ninja.tar.gz \ && cp -R /var/www/app/storage /var/www/app/docker-backup-storage \ && cp -R /var/www/app/public /var/www/app/docker-backup-public \ && mkdir -p /var/www/app/public/logo /var/www/app/storage \ && cp /var/www/app/.env.example /var/www/app/.env \ && rm -rf /var/www/app/docs /var/www/app/tests # Install nodejs packages FROM node:12-alpine as frontend COPY --from=base /var/www/app /var/www/app WORKDIR /var/www/app/ RUN npm install # Prepare php image FROM php:${PHP_VERSION}-fpm-alpine ARG INVOICENINJA_VERSION ENV INVOICENINJA_VERSION=$INVOICENINJA_VERSION LABEL maintainer="Samuel Laulhau , Holger Lösken " WORKDIR /var/www/app COPY --from=frontend /var/www/app /var/www/app COPY entrypoint.sh /usr/local/bin/docker-entrypoint RUN chmod +x /usr/local/bin/docker-entrypoint RUN set -eux; \ apk add --no-cache \ nodejs \ npm \ mysql-client \ freetype-dev \ gmp-dev \ libjpeg-turbo-dev \ libpng-dev \ libzip-dev \ oniguruma-dev \ git \ busybox-suid \ zip; \ docker-php-ext-configure gd --with-freetype --with-jpeg; \ docker-php-ext-install -j$(nproc) \ bcmath \ exif \ gd \ gmp \ # mbstring \ mysqli \ opcache \ pdo \ pdo_mysql \ zip COPY ./config/php/php.ini /usr/local/etc/php/php.ini COPY ./config/php/php-cli.ini /usr/local/etc/php/php-cli.ini RUN apk add --no-cache \ chromium \ nss \ freetype \ freetype-dev \ harfbuzz \ ca-certificates \ ttf-freefont \ nodejs \ yarn ## Separate user ENV INVOICENINJA_USER=invoiceninja RUN addgroup --gid=1500 -S "$INVOICENINJA_USER" && \ adduser --uid=1500 \ --disabled-password \ --gecos "" \ --home "$(pwd)" \ --ingroup "$INVOICENINJA_USER" \ --no-create-home \ "$INVOICENINJA_USER"; \ addgroup "$INVOICENINJA_USER" www-data; \ chown -R "$INVOICENINJA_USER":"$INVOICENINJA_USER" /var/www/app # Install Composer RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer; USER $INVOICENINJA_USER RUN /usr/local/bin/composer install --no-dev --no-suggest --no-progress --quiet # Override the environment settings from projects .env file ENV APP_ENV production ENV LOG errorlog ENV SNAPPDF_EXECUTABLE_PATH /usr/bin/chromium-browser ENTRYPOINT ["docker-entrypoint"] CMD ["php-fpm"]