Compare commits

...

7 Commits
5.0.4 ... 5.0.5

Author SHA1 Message Date
codedge
7aef08794b Merge pull request #165 from fwdIT/fix_caddy_config
Fixes #164 - caddy templating conflicts with php output
2020-06-23 08:22:57 +02:00
Koen Torfs
001c922e45 Fixes #164 - caddy templating conflicts with php output 2020-06-14 18:25:30 +02:00
Holger Lösken
85161446e9 Fix wrong evaluation of env vars 2020-06-08 14:53:16 +02:00
Holger Lösken
14c0fd89eb Extracting version out of tag 2020-06-08 10:01:53 +02:00
Holger Lösken
7b08926961 Remove config files for debian 2020-06-05 10:06:24 +02:00
Holger Lösken
a5e41d3072 Remov builts 2020-06-05 10:06:24 +02:00
Holger Lösken
72e07679eb Add naming to container 2020-06-02 12:33:19 +02:00
7 changed files with 16 additions and 169 deletions

View File

@@ -31,11 +31,5 @@ jobs:
- name: Push alpine-based image - v4
run: make push-alpine TAG="${{steps.vars.outputs.tag}}"
- name: Build image from debian - v4
run: make build-debian TAG="${{steps.vars.outputs.tag}}"
- name: Push debian-based image - v4
run: make push-debian TAG="${{steps.vars.outputs.tag}}"
- name: Logout from DockerHub
run: docker logout

View File

@@ -11,6 +11,9 @@ IMAGE="invoiceninja"
# Check if v5 tag is passed, so that a v5 version should be built
IS_V5=$(shell echo ${TAG} | egrep ^5)
# Version of Invoice Ninja. As the tag can be something like 5.0.4-p1, the version is 5.0.4.
# This supports changes to the Dockerfiles with always the same Invoice Ninja version
VERSION=$(shell echo ${TAG} | sed "s/-.*//")
# Building docker images based on alpine.
# Assigned tags:
@@ -19,10 +22,10 @@ IS_V5=$(shell echo ${TAG} | egrep ^5)
.PHONY: build-alpine
build-alpine:
ifeq ($(IS_V5),)
$(info Make: Building "$(TAG)" tagged images from alpine.)
@docker build -t ${HUB_NAMESPACE}/${IMAGE}:alpine-${TAG} --build-arg INVOICENINJA_VERSION=${TAG} --file ./alpine/Dockerfile .
$(info Make: Building "$(VERSION)" tagged images from alpine.)
@docker build -t ${HUB_NAMESPACE}/${IMAGE}:alpine-${VERSION} --build-arg INVOICENINJA_VERSION=${VERSION} --file ./alpine/Dockerfile .
# Tag as alpine-4
@docker tag ${HUB_NAMESPACE}/${IMAGE}:alpine-${TAG} ${HUB_NAMESPACE}/${IMAGE}:alpine-4
@docker tag ${HUB_NAMESPACE}/${IMAGE}:alpine-${VERSION} ${HUB_NAMESPACE}/${IMAGE}:alpine-4
$(info Make: Done.)
endif
@@ -30,7 +33,7 @@ endif
push-alpine:
ifeq ($(IS_V5),)
$(info Make: Pushing tagged images from alpine.)
@docker push ${HUB_NAMESPACE}/${IMAGE}:alpine-${TAG}
@docker push ${HUB_NAMESPACE}/${IMAGE}:alpine-${VERSION}
@docker push ${HUB_NAMESPACE}/${IMAGE}:alpine-4
$(info Make: Done.)
endif
@@ -38,10 +41,10 @@ endif
.PHONY: build-alpine-v5
build-alpine-v5:
ifneq ($(IS_V5),)
$(info Make: Building "$(TAG)" tagged images from alpine.)
@docker build -t ${HUB_NAMESPACE}/${IMAGE}:${TAG} --build-arg INVOICENINJA_VERSION=${TAG} --file ./alpine/Dockerfile_v5 .
@docker tag ${HUB_NAMESPACE}/${IMAGE}:${TAG} ${HUB_NAMESPACE}/${IMAGE}:5
@docker tag ${HUB_NAMESPACE}/${IMAGE}:${TAG} ${HUB_NAMESPACE}/${IMAGE}:latest
$(info Make: Building "$(VERSION)" tagged images from alpine.)
@docker build -t ${HUB_NAMESPACE}/${IMAGE}:${VERSION} --build-arg INVOICENINJA_VERSION=${VERSION} --file ./alpine/Dockerfile_v5 .
@docker tag ${HUB_NAMESPACE}/${IMAGE}:${VERSION} ${HUB_NAMESPACE}/${IMAGE}:5
@docker tag ${HUB_NAMESPACE}/${IMAGE}:${VERSION} ${HUB_NAMESPACE}/${IMAGE}:latest
$(info Make: Done.)
endif
@@ -49,28 +52,7 @@ endif
push-alpine-v5:
ifneq ($(IS_V5),)
$(info Make: Pushing tagged images from alpine.)
@docker push ${HUB_NAMESPACE}/${IMAGE}:${TAG}
@docker push ${HUB_NAMESPACE}/${IMAGE}:${VERSION}
@docker push ${HUB_NAMESPACE}/${IMAGE}:5
@docker push ${HUB_NAMESPACE}/${IMAGE}:latest
endif
# Building docker images based on debian.
# Assigned tags:
# - :latest
# - :<RELEASE VERSION>
.PHONY: build-debian
build-debian:
ifeq ($(IS_V5),)
$(info Make: Building "$(TAG)" tagged images from debian.)
@docker build -t ${HUB_NAMESPACE}/${IMAGE}:${TAG} --build-arg INVOICENINJA_VERSION=${TAG} --file ./debian/Dockerfile .
$(info Make: Done.)
endif
.PHONY: push-debian
push-debian:
ifeq ($(IS_V5),)
$(info Make: Pushing tagged images from debian.)
@docker push ${HUB_NAMESPACE}/${IMAGE}:${TAG}
@docker push ${HUB_NAMESPACE}/${IMAGE}:latest
$(info Make: Done.)
endif

View File

@@ -74,6 +74,7 @@ docker run -d \
-e DB_USERNAME='ninja' \
-e DB_PASSWORD='ninja' \
-p '9000:9000' \
--name invoiceninja \
invoiceninja/invoiceninja:alpine-4
```
A list of environment variables can be found [here](https://github.com/invoiceninja/invoiceninja/blob/master/.env.example).

View File

@@ -2,6 +2,5 @@
root * /var/www/app/public
php_fastcgi app:9000
encode zstd gzip
templates
file_server browse
}

76
debian/Dockerfile vendored
View File

@@ -1,76 +0,0 @@
ARG PHP_VERSION=7.2
FROM php:${PHP_VERSION}-fpm-stretch
LABEL maintainer="Samuel Laulhau <sam@lalop.co>, Holger Lösken <holger.loesken@codedge.de>"
#####
# SYSTEM REQUIREMENT
#####
ARG INVOICENINJA_VERSION
COPY ./debian/entrypoint.sh /usr/local/bin/docker-entrypoint
RUN chmod +x /usr/local/bin/docker-entrypoint
ENV BUILD_DEPS \
zlib1g-dev \
git \
libgmp-dev \
unzip \
libfreetype6-dev \
libjpeg62-turbo-dev \
libpng-dev \
build-essential \
chrpath \
libssl-dev \
libxft-dev \
libfreetype6 \
libfontconfig1 \
libfontconfig1-dev
RUN apt-get update \
&& apt-get install -y --no-install-recommends $BUILD_DEPS \
&& 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 mbstring pdo pdo_mysql zip gd gmp opcache
ENV PHANTOMJS phantomjs-2.1.1-linux-x86_64
# Install PHANTOMJS
RUN 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/*
COPY ./config/php/php.ini /usr/local/etc/php/php.ini
COPY ./config/php/php-cli.ini /usr/local/etc/php/php-cli.ini
# Download and install IN
ENV INVOICENINJA_VERSION="${INVOICENINJA_VERSION}"
RUN curl -o ninja.zip -SL https://download.invoiceninja.com/ninja-v${INVOICENINJA_VERSION}.zip \
&& unzip -q ninja.zip -d /var/www/ \
&& rm ninja.zip \
&& mv /var/www/ninja /var/www/app \
&& mv /var/www/app/storage /var/www/app/docker-backup-storage \
&& mv /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 \
&& chmod -R 755 /var/www/app/storage \
&& chown -R www-data:www-data /var/www/app/storage /var/www/app/bootstrap /var/www/app/public/logo /var/www/app/.env /var/www/app/docker-backup-storage /var/www/app/docker-backup-public\
&& rm -rf /var/www/app/docs /var/www/app/tests /var/www/ninja
# Override the environment settings from projects .env file
ENV LOG errorlog
ENV SELF_UPDATER_SOURCE ''
ENV PHANTOMJS_BIN_PATH /usr/local/bin/phantomjs
# use to be mounted into nginx for example
VOLUME /var/www/app/public
WORKDIR /var/www/app
ENTRYPOINT ["docker-entrypoint"]
CMD ["php-fpm"]

46
debian/entrypoint.sh vendored
View File

@@ -1,46 +0,0 @@
#!/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
# fix permission for mounted directories
chown www-data:www-data /var/www/app/storage
chown www-data:www-data /var/www/app/public/logo
#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 "$@"

View File

@@ -12,16 +12,9 @@ in_error() {
exit 1
}
# Indirect expansion (ie) is not supported in bourne shell. That's why we are using this clunkiness here.
# Indirect expansion (ie) is not supported in bourne shell. That's why we are using this "magic" here.
ie_gv() {
local line name value
set | \
while read line; do
name=${line%=*} value=${line#*=\'}
if [ "$name" = "$1" ]; then
echo ${value%\'}
fi
done
eval "echo \$$1"
}
# usage: file_env VAR [DEFAULT]
@@ -37,7 +30,7 @@ file_env() {
in_error "Both $var and $fileVar are set (but are exclusive)"
fi
local val="$def"
local val="$def"
if [ "$(ie_gv ${var})" != "" ]; then
val=$(ie_gv ${var})
elif [ "$(ie_gv ${fileVar})" != "" ]; then