From fae767223f1291910eb331303b67f9fba67947e4 Mon Sep 17 00:00:00 2001 From: Sam Date: Tue, 28 Feb 2017 10:37:22 +0100 Subject: [PATCH] alpine image first draft --- alpine/Dockerfile | 81 ++++++++++++++++++++++++++++++++++++++ alpine/entrypoint.sh | 42 ++++++++++++++++++++ example/docker-compose.yml | 2 +- 3 files changed, 124 insertions(+), 1 deletion(-) create mode 100644 alpine/Dockerfile create mode 100644 alpine/entrypoint.sh diff --git a/alpine/Dockerfile b/alpine/Dockerfile new file mode 100644 index 0000000..b70fed9 --- /dev/null +++ b/alpine/Dockerfile @@ -0,0 +1,81 @@ +FROM php:7.0-fpm-alpine + +MAINTAINER Samuel Laulhau + +##### +# SYSTEM REQUIREMENT +##### +ENV PHANTOMJS phantomjs-2.1.1-linux-x86_64 +RUN apk update +RUN apk add libmcrypt-dev +# RUN apk add zlib1g-dev +RUN apk add git +RUN apk add gmp-dev +RUN apk add freetype-dev +RUN apk add libjpeg-turbo-dev +RUN apk add libpng-dev +RUN apk add coreutils +RUN apk add chrpath +# RUN apk add libssl-dev +# RUN apk add libxft-dev \ + # libfreetype6 libfontconfig1 libfontconfig1-dev \ +RUN ln -s /usr/include/x86_64-linux-gnu/gmp.h /usr/local/include/ \ + && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \ + && docker-php-ext-configure gmp \ + && docker-php-ext-install iconv mcrypt mbstring pdo pdo_mysql zip gd gmp \ + && curl -o ${PHANTOMJS}.tar.bz2 -SL https://bitbucket.org/ariya/phantomjs/downloads/${PHANTOMJS}.tar.bz2 \ + && tar xvjf ${PHANTOMJS}.tar.bz2 \ + && rm ${PHANTOMJS}.tar.bz2 \ + && mv ${PHANTOMJS} /usr/local/share \ + && ln -sf /usr/local/share/${PHANTOMJS}/bin/phantomjs /usr/local/bin \ + && rm -rf /var/lib/apt/lists/* + +##### +# INSTALL COMPOSER +##### +RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer + + +##### +# DOWNLOAD AND INSTALL INVOICE NINJA +##### + +ENV INVOICENINJA_VERSION 3.0.5 + +RUN curl -o invoiceninja.tar.gz -SL https://github.com/hillelcoren/invoice-ninja/archive/v${INVOICENINJA_VERSION}.tar.gz \ + && tar -xzf invoiceninja.tar.gz -C /var/www/ \ + && rm invoiceninja.tar.gz \ + && mv /var/www/invoiceninja-${INVOICENINJA_VERSION} /var/www/app \ + && chown -R www-data:www-data /var/www/app \ + && composer install --working-dir /var/www/app -o --no-dev --no-interaction --no-progress \ + && chown -R www-data:www-data /var/www/app/bootstrap/cache \ + && mv /var/www/app/storage /var/www/app/docker-backup-storage \ + && mv /var/www/app/public /var/www/app/docker-backup-public \ + && rm -rf /var/www/app/docs /var/www/app/tests + + +###### +# DEFAULT ENV +###### +ENV DB_HOST mysql +ENV DB_DATABASE ninja +ENV DB_USERNAME ninja +ENV DB_PASSWORD ninja +ENV APP_KEY SomeRandomString +ENV LOG errorlog +ENV APP_DEBUG 0 +ENV APP_CIPHER rijndael-128 +ENV SELF_UPDATER_SOURCE '' +ENV PHANTOMJS_BIN_PATH /usr/local/bin/phantomjs + + +#use to be mounted into nginx for exemple +VOLUME /var/www/app/public + +WORKDIR /var/www/app + +COPY entrypoint.sh /usr/local/bin/ +# RUN chmod +x /invoice-entrypoint + +ENTRYPOINT ["entrypoint.sh"] +CMD ["php-fpm"] diff --git a/alpine/entrypoint.sh b/alpine/entrypoint.sh new file mode 100644 index 0000000..97b0ff7 --- /dev/null +++ b/alpine/entrypoint.sh @@ -0,0 +1,42 @@ +#!/bin/bash +set -e + +if [ ! -d /var/www/app/storage ]; then + cp -Rp /var/www/app/docker-backup-storage /var/www/app/storage +else + IN_STORAGE_BACKUP="$(ls /var/www/app/docker-backup-storage/)" + for path in $IN_STORAGE_BACKUP; do + if [ ! -e "/var/www/app/storage/$path" ]; then + cp -Rp "/var/www/app/docker-backup-storage/$path" "/var/www/app/storage/" + fi + done +fi + +if [ ! -d /var/www/app/public/logo ]; then + cp -Rp /var/www/app/docker-backup-public/logo /var/www/app/public/logo +else + IN_LOGO_BACKUP="$(ls /var/www/app/docker-backup-public/logo/)" + for path in $IN_LOGO_BACKUP; do + if [ ! -e "/var/www/app/public/logo/$path" ]; then + cp -Rp "/var/www/app/docker-backup-public/logo/$path" "/var/www/app/public/logo/" + fi + done +fi + +# compare public volume version with image version +if [ ! -e /var/www/app/public/version ] || [ "$INVOICENINJA_VERSION" != "$(cat /var/www/app/public/version)" ]; then + echo 'clone public directory' + cp -Rp /var/www/app/docker-backup-public/* /var/www/app/public/ + echo $INVOICENINJA_VERSION > /var/www/app/public/version +fi + +#php artisan optimize --force +#php artisan migrate --force + +#if [ ! -e "/var/www/app/is-seeded" ]; then + #php artisan db:seed --force + #touch "/var/www/app/is-seeded" +#fi + +echo 'start' +exec "$@" diff --git a/example/docker-compose.yml b/example/docker-compose.yml index 173521e..db7f105 100644 --- a/example/docker-compose.yml +++ b/example/docker-compose.yml @@ -8,7 +8,7 @@ services: MYSQL_ROOT_PASSWORD: pwd app: - image: invoiceninja/invoiceninja + image: invoice:alpine links: - db:mysql env_file: .env