mirror of
https://github.com/invoiceninja/dockerfiles.git
synced 2026-01-01 20:17:26 +01:00
119 lines
3.1 KiB
Plaintext
119 lines
3.1 KiB
Plaintext
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 <sam@lalop.co>, Holger Lösken <holger.loesken@codedge.de>"
|
|
|
|
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 -S "$INVOICENINJA_USER" && \
|
|
adduser \
|
|
--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;
|
|
|
|
## Set up the cronjob and run cron daemon
|
|
RUN echo "* * * * * run-parts /etc/periodic/1min" >> /etc/crontabs/root
|
|
COPY ./config/cron/cronjob_v5.sh /etc/periodic/1min/invoiceninja_cronjob
|
|
RUN chown $INVOICENINJA_USER /etc/periodic/1min/invoiceninja_cronjob && \
|
|
crond -l 2 -b
|
|
|
|
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"]
|