mirror of
https://github.com/invoiceninja/dockerfiles.git
synced 2026-01-01 12:07:26 +01:00
Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7aef08794b | ||
|
|
001c922e45 | ||
|
|
85161446e9 | ||
|
|
14c0fd89eb | ||
|
|
7b08926961 | ||
|
|
a5e41d3072 | ||
|
|
72e07679eb |
6
.github/workflows/build_push.yml
vendored
6
.github/workflows/build_push.yml
vendored
@@ -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
|
||||
42
Makefile
42
Makefile
@@ -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
|
||||
@@ -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).
|
||||
|
||||
@@ -2,6 +2,5 @@
|
||||
root * /var/www/app/public
|
||||
php_fastcgi app:9000
|
||||
encode zstd gzip
|
||||
templates
|
||||
file_server browse
|
||||
}
|
||||
|
||||
76
debian/Dockerfile
vendored
76
debian/Dockerfile
vendored
@@ -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
46
debian/entrypoint.sh
vendored
@@ -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 "$@"
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user