Compare commits

...

89 Commits

Author SHA1 Message Date
David Bomba
486d38d6e1 Merge pull request #263 from turbo124/master
Remove sys_admin, add application variable
2021-01-19 07:39:15 +11:00
David Bomba
89ae36315d Remove sys_admin, add application variable 2021-01-19 07:38:54 +11:00
David Bomba
0c3237d3b9 Merge pull request #258 from lwj5/dockerfile
Enhancement and Fixes for Dockerfile
2021-01-11 16:11:52 +11:00
Lee Ween Jiann
e29f786b34 Revert 'git' dependency comment 2021-01-11 11:01:52 +08:00
Lee Ween Jiann
bfc5625687 Update entrypoint.sh to use ENV username 2021-01-10 22:34:49 +08:00
Lee Ween Jiann
4b5abbbd5e Add public missing folder condition for quick move 2021-01-10 22:16:34 +08:00
Lee Ween Jiann
a12f18836a Use uid to allow running in k8s with non-root PSP 2021-01-10 21:34:53 +08:00
Lee Ween Jiann
d59d534ac5 Update entrypoint.sh to use ENV paths + cleanup 2021-01-10 21:32:59 +08:00
Lee Ween Jiann
35d9ee80b7 Update Dockerfiles to use ENV for BAK paths 2021-01-10 21:31:05 +08:00
Lee Ween Jiann
115b997cab Move BAK to after npm run prod 2021-01-10 21:29:56 +08:00
Lee Ween Jiann
8ca8e459be Update cron to depend on app
- prevents race to copy files
2021-01-10 21:18:30 +08:00
David Bomba
15625f41f9 Merge pull request #257 from lwj5/patch-2
Remove node_modules and clean up
2021-01-10 09:17:18 +11:00
Ween Jiann
9dc1fec1fb Reinsert fonts 2021-01-08 22:13:06 +08:00
Ween Jiann
2342fd8cbb Remove node_modules and clean up 2021-01-08 21:28:43 +08:00
David Bomba
ae1f8fcecb Merge pull request #251 from turbo124/master
fixes for cron
2021-01-05 22:48:50 +11:00
David Bomba
6528ef7162 fixes for cron 2021-01-05 22:48:27 +11:00
David Bomba
2f6b5ea55e Minor fix 2021-01-05 22:45:29 +11:00
David Bomba
7c1ef82a09 Merge pull request #250 from turbo124/master
Update V4 container
2021-01-05 17:15:55 +11:00
David Bomba
98846729e6 update maintainer 2021-01-05 17:15:33 +11:00
David Bomba
f03860d8ea Fixes for V4 container 2021-01-05 17:14:49 +11:00
David Bomba
c624f6ed40 Fixes for V4 2021-01-05 16:20:27 +11:00
David Bomba
c94145edca Merge pull request #249 from turbo124/master
Fixes for Readme.
2021-01-05 12:09:01 +11:00
David Bomba
ff2c813355 Fixes for readme 2021-01-05 12:08:07 +11:00
David Bomba
e0cf941736 Typo 2021-01-05 11:56:49 +11:00
David Bomba
b1d65a8ac9 Typo 2021-01-05 11:56:21 +11:00
David Bomba
e6ad0c58ee Typo 2021-01-05 11:55:00 +11:00
David Bomba
11b99e7970 Typo 2021-01-05 11:54:19 +11:00
David Bomba
5fa605cba4 Typo 2021-01-05 11:53:36 +11:00
David Bomba
388f1a75b9 Merge pull request #248 from turbo124/master
Refactor DockerFiles
2021-01-05 11:52:28 +11:00
David Bomba
253c3339cf Fixes for ReadMe 2021-01-05 11:51:50 +11:00
David Bomba
d67fa3059a fixes for entrypoint 2021-01-05 11:09:56 +11:00
David Bomba
98e41ad73b Rework crons 2021-01-05 11:02:57 +11:00
David Bomba
14c597312e Fixes for formatting 2021-01-05 10:47:59 +11:00
David Bomba
af77440555 changes for README 2021-01-05 10:46:55 +11:00
David Bomba
9377777f62 Create .keep 2021-01-04 20:15:19 +11:00
David Bomba
ac7c520620 Create .keep 2021-01-04 20:15:03 +11:00
David Bomba
1ae79cde4f Merge pull request #247 from turbo124/master
Fixes for docker file
2021-01-04 20:12:35 +11:00
David Bomba
a58b89c55d Fixes for docker file" 2021-01-04 20:11:50 +11:00
David Bomba
89e6cffa90 Merge pull request #246 from turbo124/master
Fixes for crons and folder permissions
2021-01-03 21:34:27 +11:00
David Bomba
a82d60b4f5 Fixes for crons and folder permissions 2021-01-03 21:34:04 +11:00
David Bomba
32c93eb4d7 Merge pull request #241 from beganovich/v5-skip-snappdf-download
(v5) Add environment variable to skip downloading Chromium (snappdf)
2020-12-30 09:26:34 +11:00
=
9e603ba79f Fixes for crontab 2020-12-30 07:33:50 +11:00
Benjamin Beganović
d9889fcfaa Add variable to skip Chromium download 2020-12-28 14:25:16 +01:00
David Bomba
a89e145bf9 Merge pull request #239 from beganovich/v5-transition-to-snappdf
(v5) Support for snappdf
2020-12-24 09:25:32 +11:00
Benjamin Beganović
85d46e8968 support for snappdf 2020-12-23 18:06:31 +01:00
David Bomba
0fb5fa73e0 Merge pull request #233 from turbo124/master
fixes for docker file
2020-12-05 20:14:39 +11:00
David Bomba
de3a2e4278 fixes for docker file 2020-12-05 20:14:19 +11:00
David Bomba
bb514e8d06 Merge pull request #232 from turbo124/master
Remove storage:link from image build
2020-11-30 10:00:27 +11:00
David Bomba
2034c6ebff Remove storage:link from image build 2020-11-30 09:56:30 +11:00
David Bomba
65e36505a3 Merge pull request #231 from turbo124/master
Minor fixes
2020-11-28 18:07:34 +11:00
David Bomba
03c1e32123 Minor fixes 2020-11-28 18:07:16 +11:00
David Bomba
3612c87323 Merge pull request #230 from turbo124/master
Default to puppeteer PDF generation
2020-11-28 17:51:04 +11:00
David Bomba
4e9731a23e Default to puppeteer PDF generation 2020-11-28 17:50:46 +11:00
David Bomba
dea442c442 Merge pull request #229 from turbo124/master
Install libonig-dev with apk
2020-11-28 17:26:33 +11:00
David Bomba
a24c1b98a3 Install libonig-dev with apk 2020-11-28 17:26:13 +11:00
David Bomba
1596478724 Merge pull request #228 from turbo124/master
Install libonig-dev with apt
2020-11-28 17:20:28 +11:00
David Bomba
a240fd2977 Install libonig-dev with apt 2020-11-28 17:20:09 +11:00
David Bomba
7c1ef67755 Merge pull request #227 from turbo124/master
fixes for 7.4
2020-11-28 17:15:14 +11:00
David Bomba
bfc1d7add8 fixes for 7.4 2020-11-28 17:14:57 +11:00
David Bomba
111f5a7e4e Merge pull request #226 from turbo124/master
Add libonig to build
2020-11-28 17:12:27 +11:00
David Bomba
330f3e1c0e Add libonig to build 2020-11-28 17:12:10 +11:00
David Bomba
baeb925d87 Merge pull request #225 from turbo124/master
Add libonig to build
2020-11-28 17:05:46 +11:00
David Bomba
079a05bbd8 Add libonig to build 2020-11-28 17:05:30 +11:00
David Bomba
8e995aa2ef Merge pull request #224 from turbo124/master
Add libonig to build
2020-11-28 16:56:25 +11:00
David Bomba
dee4d0f27d Add libonig to build 2020-11-28 16:56:09 +11:00
David Bomba
60e5a68e01 Merge pull request #223 from turbo124/master
Fixes for lib jpg and freetype for php7.4
2020-11-28 16:49:45 +11:00
David Bomba
67ad43d05d Fixes for lib jpg and freetype for php7.4 2020-11-28 16:49:18 +11:00
David Bomba
35beefba60 Merge pull request #222 from turbo124/master
Fixes for lib jpg and freetype for php7.4
2020-11-28 16:45:22 +11:00
David Bomba
d1309cc86f Fixes for lib jpg and freetype for php7.4 2020-11-28 16:45:03 +11:00
David Bomba
a1d9220506 Merge pull request #221 from turbo124/master
Fix for libzip when using php7.4
2020-11-28 16:39:36 +11:00
David Bomba
386359a346 Fix for libzip when using php7.4 2020-11-28 16:38:50 +11:00
David Bomba
b503418904 Merge pull request #220 from turbo124/master
Fix for libzip when using php7.4
2020-11-28 16:28:33 +11:00
David Bomba
450eaf16e3 Fix for libzip when using php7.4 2020-11-28 16:28:13 +11:00
David Bomba
1f65c9f7f6 Merge pull request #219 from turbo124/master
Fixes for building zip on php7.4
2020-11-28 16:23:28 +11:00
David Bomba
c02bf7bd03 Fixes for building zip on php7.4 2020-11-28 16:22:58 +11:00
David Bomba
4111fa87c9 Merge pull request #218 from turbo124/master
Fix for libzip when using php7.4
2020-11-28 16:15:59 +11:00
David Bomba
0d5a7671ba Fix for libzip when using php7.4 2020-11-28 16:15:40 +11:00
David Bomba
7ea6e7c48e Merge pull request #217 from turbo124/master
Bump PHP version for spatie/browsershot
2020-11-28 16:09:14 +11:00
David Bomba
27e1788e91 Bump PHP version for spatie/browsershot 2020-11-28 16:08:54 +11:00
David Bomba
d24a69ec39 Merge pull request #216 from turbo124/master
Composer fixes
2020-11-28 15:59:17 +11:00
David Bomba
8384175465 Composer fixes 2020-11-28 15:58:56 +11:00
David Bomba
f8c442ec5f Merge pull request #215 from turbo124/master
Ensure we use composer 2
2020-11-28 15:35:01 +11:00
David Bomba
05f89f064e Ensure we use composer 2 2020-11-28 15:34:40 +11:00
David Bomba
902745ec5a Merge pull request #214 from turbo124/master
minor fixes
2020-11-28 15:31:51 +11:00
David Bomba
4efba38ce5 minor fixes 2020-11-28 15:31:21 +11:00
David Bomba
a184cf2844 Merge pull request #213 from turbo124/master
Add Git / link storage
2020-11-28 07:26:12 +11:00
David Bomba
94e8be57e5 Merge branch 'master' of https://github.com/turbo124/dockerfiles 2020-11-28 07:25:07 +11:00
David Bomba
385a434833 Add git to container to allow auto-updating from container 2020-11-28 07:24:59 +11:00
David Bomba
9ddeda4c32 storage link 2020-11-25 20:33:23 +11:00
11 changed files with 239 additions and 152 deletions

View File

@@ -4,17 +4,72 @@
# Docker for [Invoice Ninja](https://www.invoiceninja.com/)
:bulb: Please consider posting your question on [StackOverflow](https://stackoverflow.com/) as this widens the audience that can help you. Just use the tag `invoice-ninja` and we are there to help. This is mostly related to the usage of Invoice Ninja and the docker setup.
If you feel your question is directly related to a code change or you want to sent in a change + PR Github is the right place, of course.
:crown: **Features**
:lock: Automatic HTTPS (:heart: [Caddy](https://caddyserver.com/))
:fire: NGINX webserver support [NGINX](https://nginx.org/)
:hammer: Fully production-ready through docker-compose
:pencil: Adjustable to your needs via environment variable
## Quickstart V5 Launch
The dockerfile has been revamped to make is easier to get started, by default the base image selected in 5 which will pull in the latest v5 stable image.
```
git clone https://github.com/invoiceninja/dockerfiles.git
cd dockerfiles
```
Instead of defining our environment variables inside our docker-compose.yml file we now define this in the ```env``` file, open this file up and insert your APP_URL and your APP_KEY
```
APP_URL=http://in.localhost:8003/
APP_KEY=<insert your generated key in here>
APP_DEBUG=true
MULTI_DB_ENABLED=false
DB_HOST1=db
DB_USERNAME1=ninja
DB_PASSWORD1=ninja
DB_DATABASE1=ninja
PHANTOMJS_PDF_GENERATION=false
```
The ```APP_KEY``` can be generated by running
```
docker run --rm -it invoiceninja/invoiceninja php artisan key:generate --show
```
Copy the entire string and insert in the env file at ```APP_KEY=base64....```
To ensure folder permissions are correct when the container comes up for the first time it is important that you set the correct folder permissions on the ```docker``` folder.
From the terminal run
```sudo chown -R 1500:1500 docker/app```
### Note for people running the container locally on their PC ###
If you are running the container locally, then the container will need to resolve the host, to support this you will want to insert your LAN IP address and the host name in the hosts file located in ```config/hosts```
For example, lets say your APP_URL is ```http://in5.test:8000``` and your LAN IP is 192.168.0.124 the hosts file will have an entry looking like this:
```192.168.0.124 in5.test```
**Please note that PDF generation using local host your domain name MUST end in .test for your PDFs to generate correctly, this is a DNS resolver issue with chromium.
All that is left to do now is bring up the container
``` docker-compose up -d```
**Note: When performing the setup, the Database host is ```db```
## Support
If you discover a bug, please create and issue, if you query is general in nature please visit us on our [Forum ](https://forum.invoiceninja.com/)
## Documentation
Please see our [wiki](https://github.com/invoiceninja/dockerfiles/wiki) for further guidance.

View File

@@ -1,13 +1,19 @@
ARG PHP_VERSION=7.2
ARG BAK_STORAGE_PATH=/var/www/app/docker-backup-storage/
ARG BAK_PUBLIC_PATH=/var/www/app/docker-backup-public/
FROM php:${PHP_VERSION}-fpm-alpine
LABEL maintainer="Samuel Laulhau <sam@lalop.co>, Holger Lösken <holger.loesken@codedge.de>"
LABEL maintainer="David Bomba <turbo124@gmail.com>"
#####
# SYSTEM REQUIREMENT
#####
ARG INVOICENINJA_VERSION
ARG BAK_STORAGE_PATH
ARG BAK_PUBLIC_PATH
ENV BAK_STORAGE_PATH $BAK_STORAGE_PATH
ENV BAK_PUBLIC_PATH $BAK_PUBLIC_PATH
WORKDIR /var/www/app
COPY entrypoint.sh /usr/local/bin/docker-entrypoint
@@ -24,8 +30,8 @@ RUN set -eux; \
libzip-dev
RUN docker-php-ext-configure gd --with-jpeg-dir=/usr/include/ --with-png-dir=/usr/include --with-webp-dir=/usr/include --with-freetype-dir=/usr/include/; \
docker-php-ext-configure zip --with-libzip; \
docker-php-ext-install -j$(nproc) \
docker-php-ext-configure zip --with-libzip; \
docker-php-ext-install -j$(nproc) \
iconv \
gd \
gmp \
@@ -39,20 +45,20 @@ COPY ./config/php/php.ini /usr/local/etc/php/php.ini
COPY ./config/php/php-cli.ini /usr/local/etc/php/php-cli.ini
# Separate user
ENV IN_USER=invoiceninja
ENV INVOICENINJA_USER=invoiceninja
RUN addgroup -S "$IN_USER" && \
adduser \
RUN addgroup --gid=1500 -S "$INVOICENINJA_USER" && \
adduser --uid=1500 \
--disabled-password \
--gecos "" \
--home "$(pwd)" \
--ingroup "$IN_USER" \
--ingroup "$INVOICENINJA_USER" \
--no-create-home \
"$IN_USER"; \
addgroup "$IN_USER" www-data; \
chown -R "$IN_USER":"$IN_USER" .
"$INVOICENINJA_USER"; \
addgroup "$INVOICENINJA_USER" www-data; \
chown -R "$INVOICENINJA_USER":"$INVOICENINJA_USER" .
USER $IN_USER
USER $INVOICENINJA_USER
# Download and install IN
ENV INVOICENINJA_VERSION="${INVOICENINJA_VERSION}"
@@ -60,10 +66,9 @@ ENV INVOICENINJA_VERSION="${INVOICENINJA_VERSION}"
RUN curl -s -o /tmp/ninja.zip -SL https://download.invoiceninja.com/ninja-v${INVOICENINJA_VERSION}.zip \
&& bsdtar --strip-components=1 -C /var/www/app -xf /tmp/ninja.zip \
&& rm /tmp/ninja.zip \
&& mv /var/www/app/storage /var/www/app/docker-backup-storage \
&& mv /var/www/app/public /var/www/app/docker-backup-public \
&& mv /var/www/app/storage $BAK_STORAGE_PATH \
&& mv /var/www/app/public $BAK_PUBLIC_PATH \
&& 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 \
&& rm -rf /var/www/app/docs /var/www/app/tests

View File

@@ -1,40 +1,45 @@
ARG PHP_VERSION=7.3
ARG PHP_VERSION=7.4
ARG BAK_STORAGE_PATH=/var/www/app/docker-backup-storage/
ARG BAK_PUBLIC_PATH=/var/www/app/docker-backup-public/
# Get Invoice Ninja
FROM alpine:latest as base
# Get Invoice Ninja and install nodejs packages
FROM node:lts-alpine as frontend
ARG INVOICENINJA_VERSION
ARG BAK_STORAGE_PATH
ARG BAK_PUBLIC_PATH
# Install dependencies
RUN set -eux; \
apk add --no-cache \
curl \
mysql-client \
libarchive-tools; \
mkdir -p /var/www/app
curl
# Download Invoice Ninja
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 \
&& tar --strip-components=1 -xf /tmp/ninja.tar.gz -C /var/www/app/ \
&& mkdir -p /var/www/app/public/logo /var/www/app/storage \
&& cp /var/www/app/.env.example /var/www/app/.env \
&& cp /var/www/app/.env.dusk.example /var/www/app/.env.dusk.local \
&& mv /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
# Install node packages
RUN npm install --production \
&& npm run production \
&& rm -rf node_modules \
&& mv /var/www/app/storage $BAK_STORAGE_PATH \
&& mv /var/www/app/public $BAK_PUBLIC_PATH
# Prepare php image
FROM php:${PHP_VERSION}-fpm-alpine
ARG INVOICENINJA_VERSION
ENV INVOICENINJA_VERSION=$INVOICENINJA_VERSION
ARG BAK_STORAGE_PATH
ARG BAK_PUBLIC_PATH
ENV INVOICENINJA_VERSION $INVOICENINJA_VERSION
ENV BAK_STORAGE_PATH $BAK_STORAGE_PATH
ENV BAK_PUBLIC_PATH $BAK_PUBLIC_PATH
LABEL maintainer="Samuel Laulhau <sam@lalop.co>, Holger Lösken <holger.loesken@codedge.de>"
LABEL maintainer="David Bomba <turbo124@gmail.com>"
WORKDIR /var/www/app
@@ -44,79 +49,60 @@ 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; \
docker-php-ext-configure zip --with-libzip; \
docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ --with-png-dir=/usr/include/; \
docker-php-ext-install -j$(nproc) \
libzip-dev \
# oniguruma-dev \
git \
# busybox-suid \
zip \
chromium \
harfbuzz \
ttf-freefont \
&& 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
# Tell Puppeteer to skip installing Chrome. We'll be using the installed package.
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true \
PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser
# Puppeteer v1.19.0 works with Chromium 77.
RUN yarn add puppeteer@1.19.0
## Separate user
ARG UID=1500
ENV INVOICENINJA_USER=invoiceninja
RUN addgroup -S "$INVOICENINJA_USER" && \
adduser \
RUN addgroup --gid=$UID -S "$INVOICENINJA_USER" \
&& adduser --uid=$UID \
--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
"$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 $UID
USER $INVOICENINJA_USER
RUN composer install --no-dev --no-suggest --no-progress --quiet
RUN /usr/local/bin/composer install --no-dev --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"]

16
config/cron.sh Executable file
View File

@@ -0,0 +1,16 @@
#!/bin/sh
echo "Early Entry"
cleanup ()
{
kill -s SIGTERM $!
exit 0
}
trap cleanup SIGINT SIGTERM
while :
do
sleep 60 ; cd /var/www/app/ && php artisan schedule:run;
done

1
config/hosts Normal file
View File

@@ -0,0 +1 @@
192.168.0.124 in5.test

View File

@@ -1,6 +1,6 @@
server {
listen 80 default_server;
server_name in.localhost;
server_name _;
root /var/www/app/public/;
index index.php;

View File

@@ -2,59 +2,48 @@ version: '3.7'
services:
server:
image: caddy:alpine
image: nginx
restart: always
environment:
- APP_URL=https://localhost
env_file: env
volumes:
# Vhost configuration
- ./config/caddy/Caddyfile:/etc/caddy/Caddyfile
# Configure your mounted directories, make sure the folder 'public' and 'storage'
# exist, before mounting them
- public:/var/www/app/public
- storage:/var/www/app/storage
#- ./config/caddy/Caddyfile:/etc/caddy/Caddyfiledocker-com
- ./config/nginx/in-vhost.conf:/etc/nginx/conf.d/in-vhost.conf:ro
# you may use a bind-mounted host directory instead, so that it is harder to accidentally remove the volume and lose all your data!
# - ./docker/app/public:/var/www/app/public:rw,delegated
# - ./docker/app/storage:/var/www/app/storage:rw,delegated
- ./docker/app/public:/var/www/app/public:rw,delegated
- ./docker/app/storage:/var/www/app/storage:rw,delegated
depends_on:
- app
# Run webserver nginx on port 80
# Feel free to modify depending what port is already occupied
ports:
- "80:80"
- "443:443"
#- "443:443"
networks:
- invoiceninja
extra_hosts:
- "in5.localhost:192.168.0.124 " #host and ip
app:
image: invoiceninja/invoiceninja:5
env_file: env
restart: always
cap_add:
- SYS_ADMIN
environment:
- APP_URL=https://localhost
- APP_KEY=<INSERT THE GENERATED APPLICATION KEY HERE>
- MULTI_DB_ENABLED=false
- DB_HOST1=db
- DB_USERNAME1=ninja
- DB_PASSWORD1=ninja
- DB_DATABASE1=ninja
volumes:
# Configure your mounted directories, make sure the folder 'public' and 'storage'
# exist, before mounting them
- public:/var/www/app/public
- storage:/var/www/app/storage
# you may use a bind-mounted host directory instead, so that it is harder to accidentally remove the volume and lose all your data!
# - ./docker/app/public:/var/www/app/public:rw,delegated
# - ./docker/app/storage:/var/www/app/storage:rw,delegated
- ./config/hosts:/etc/hosts:ro
- ./docker/app/public:/var/www/app/public:rw,delegated
- ./docker/app/storage:/var/www/app/storage:rw,delegated
depends_on:
- db
networks:
- invoiceninja
extra_hosts:
- "in5.localhost:192.168.0.124 " #host and ip
db:
image: mysql:5
ports:
- "3305:3306"
restart: always
environment:
- MYSQL_ROOT_PASSWORD=ninjaAdm1nPassword
@@ -62,19 +51,38 @@ services:
- MYSQL_PASSWORD=ninja
- MYSQL_DATABASE=ninja
volumes:
- mysql-data:/var/lib/mysql:rw
# you may use a bind-mounted host directory instead, so that it is harder to accidentally remove the volume and lose all your data!
# - ./docker/mysql/data:/var/lib/mysql:rw,delegated
- ./docker/mysql/data:/var/lib/mysql:rw,delegated
networks:
- invoiceninja
extra_hosts:
- "in5.localhost:192.168.0.124 " #host and ip
# THIS IS ONLY A VALID CONFIGURATION FOR IN 5. DO NOT USE FOR IN 4.
cron:
image: invoiceninja/invoiceninja:5
env_file: env
volumes:
- ./config/cron.sh:/usr/local/bin/cron.sh
- ./config/hosts:/etc/hosts:ro
- ./docker/app/public:/var/www/app/public:rw,delegated
- ./docker/app/storage:/var/www/app/storage:rw,delegated
command:
- cron.sh
depends_on:
- app
networks:
- invoiceninja
extra_hosts:
- "in5.localhost:192.168.0.124 " #host and ip
# THIS IS ONLY A VALID CONFIGURATION FOR IN 4. DO NOT USE FOR IN 5.
# cron:
# image: invoiceninja/invoiceninja:alpine-4
# volumes:
# - storage:/var/www/app/storage
# - logo:/var/www/app/public/logo
# - public:/var/www/app/public
# - ./docker/app/public:/var/www/app/public:rw,delegated
# - ./docker/app/storage:/var/www/app/storage:rw,delegated
# - ./docker/app/public/logo:/var/www/app/public/logo:rw,delegated
# entrypoint: |
# /bin/sh -c 'sh -s <<EOF
# trap "break;exit" SIGHUP SIGINT SIGTERM
@@ -87,13 +95,7 @@ services:
# EOF'
# networks:
# - invoiceninja
volumes:
mysql-data:
public:
storage:
# This is needed for letting th cron run correctly
# logo:
#
networks:
invoiceninja:
invoiceninja:

1
docker/app/public/.keep Normal file
View File

@@ -0,0 +1 @@

1
docker/app/storage/.keep Normal file
View File

@@ -0,0 +1 @@

View File

@@ -47,43 +47,43 @@ if [ "${1#-}" != "$1" ]; then
set -- php-fpm "$@"
fi
BAK_STORAGE_PATH=/var/www/app/docker-backup-storage/
BAK_LOGO_PATH=/var/www/app/docker-backup-public/logo/
if [ ! -d /var/www/app/storage ]; then
cp -Rp $BAK_STORAGE_PATH /var/www/app/storage
else
if [ -d $BAK_STORAGE_PATH ]; then
IN_STORAGE_BACKUP="$(ls $BAK_STORAGE_PATH)"
for path in $IN_STORAGE_BACKUP; do
if [ ! -e "/var/www/app/storage/$path" ]; then
cp -Rp "$BAK_STORAGE_PATH/$path" "/var/www/app/storage/"
fi
done
fi
# create storage volume
if [ ! -d /var/www/app/storage ] && [ -d "$BAK_STORAGE_PATH" ]; then
mv "$BAK_STORAGE_PATH" /var/www/app/storage
elif [ -d "$BAK_STORAGE_PATH" ]; then
# copy missing folders in storage
IN_STORAGE_BACKUP="$(ls "$BAK_STORAGE_PATH")"
for path in $IN_STORAGE_BACKUP; do
if [ ! -e "/var/www/app/storage/$path" ]; then
cp -Rp "$BAK_STORAGE_PATH/$path" "/var/www/app/storage/"
fi
done
fi
rm -rf "$BAK_STORAGE_PATH"
if [ ! -d /var/www/app/public/logo ] && [ -d $BAK_LOGO_PATH ]; then
cp -Rp $BAK_LOGO_PATH /var/www/app/public/logo
else
if [ -d $BAK_LOGO_PATH ]; then
IN_LOGO_BACKUP="$(ls $BAK_LOGO_PATH)"
for path in $IN_LOGO_BACKUP; do
if [ ! -e "/var/www/app/public/logo/$path" ]; then
cp -Rp "$BAK_LOGO_PATH/$path" "/var/www/app/public/logo/"
fi
done
fi
fi
# compare public volume version with image version
if [ ! -e /var/www/app/public/version ] || [ "$INVOICENINJA_VERSION" != "$(cat /var/www/app/public/version)" ]; then
cp -au /var/www/app/docker-backup-public/* /var/www/app/public/
echo $INVOICENINJA_VERSION > /var/www/app/public/version
# create public volume
if [ ! -d /var/www/app/public ] && [ -d "$BAK_PUBLIC_PATH" ]; then
mv "$BAK_PUBLIC_PATH" /var/www/app/public
elif [ ! -e /var/www/app/public/version ] || [ "$INVOICENINJA_VERSION" != "$(cat /var/www/app/public/version)" ]; then
# version mismatch, update all
cp -au "$BAK_PUBLIC_PATH/"* /var/www/app/public
echo "$INVOICENINJA_VERSION" > /var/www/app/public/version
elif [ ! -d /var/www/app/public/logo ] && [ -d "$BAK_PUBLIC_PATH/logo" ]; then
# missing logo folder only, copy folder
cp -a "$BAK_PUBLIC_PATH/logo" /var/www/app/public/logo
elif [ -d "$BAK_PUBLIC_PATH/logo" ]; then
# copy missing folders in logo
IN_LOGO_BACKUP="$(ls "$BAK_PUBLIC_PATH/logo")"
for path in $IN_LOGO_BACKUP; do
if [ ! -e "/var/www/app/public/logo/$path" ]; then
cp -a "$BAK_PUBLIC_PATH/logo/$path" "/var/www/app/public/logo/"
fi
done
fi
rm -rf "$BAK_PUBLIC_PATH"
# Set permission for web server to create/update files
chown -R invoiceninja:www-data /var/www/app/storage /var/www/app/public /var/www/app/bootstrap
chown -R "$INVOICENINJA_USER":www-data /var/www/app/storage /var/www/app/public /var/www/app/bootstrap
# Initialize values that might be stored in a file
file_env 'APP_KEY'
@@ -104,5 +104,6 @@ file_env 'S3_SECRET'
# Run Laravel stuff
php artisan config:cache
php artisan optimize
php artisan migrate --force
exec docker-php-entrypoint "$@"

19
env Normal file
View File

@@ -0,0 +1,19 @@
APP_URL=http://in.localhost:8003/
APP_KEY=<insert your generated key in here>
APP_DEBUG=true
MULTI_DB_ENABLED=false
DB_HOST1=db
DB_USERNAME1=ninja
DB_PASSWORD1=ninja
DB_DATABASE1=ninja
#this is a system variable please do not remove
IS_DOCKER=true
#V4 env vars
DB_STRICT=false
DB_HOST=db
DB_DATABASE=ninja
DB_USERNAME=ninja
DB_PASSWORD=ninja
APP_CIPHER=AES-256-CBC