summaryrefslogtreecommitdiff
path: root/docker
diff options
context:
space:
mode:
authorMichael Weimann <mail@michael-weimann.eu>2019-10-14 22:23:52 +0200
committerMichael Weimann <mail@michael-weimann.eu>2019-10-24 22:09:14 +0200
commit53ce83a272c636c4eccd043f16215d7475a2d8a9 (patch)
tree51e00aa0c768ea5b60a335b97ac64deb75517276 /docker
parent9b08b951a2f7036519a9711ff4aa32a8709e261d (diff)
Moves docker files from contrib to docker
Diffstat (limited to 'docker')
-rw-r--r--docker/.env1
-rw-r--r--docker/Dockerfile48
-rw-r--r--docker/docker-compose.yml46
-rw-r--r--docker/nginx/Dockerfile11
-rw-r--r--docker/nginx/nginx.conf42
5 files changed, 148 insertions, 0 deletions
diff --git a/docker/.env b/docker/.env
new file mode 100644
index 00000000..5f8d43b8
--- /dev/null
+++ b/docker/.env
@@ -0,0 +1 @@
+COMPOSE_PROJECT_NAME="engelsystem"
diff --git a/docker/Dockerfile b/docker/Dockerfile
new file mode 100644
index 00000000..013ccf1d
--- /dev/null
+++ b/docker/Dockerfile
@@ -0,0 +1,48 @@
+# composer install
+FROM composer AS composer
+COPY ./ /app/
+RUN composer --no-ansi install --no-dev --ignore-platform-reqs
+RUN composer --no-ansi dump-autoload --optimize
+
+# Intermediate containers for less layers
+FROM alpine as translation
+RUN apk add gettext
+COPY resources/lang/ /data
+RUN find /data -type f -name '*.po' -exec sh -c 'file="{}"; msgfmt "${file%.*}.po" -o "${file%.*}.mo"' \;
+
+FROM alpine as data
+COPY .babelrc .browserslistrc composer.json LICENSE package.json README.md webpack.config.js yarn.lock /app/
+COPY bin/ /app/bin
+COPY config/ /app/config
+COPY db/ /app/db
+RUN mkdir /app/import/
+COPY includes/ /app/includes
+COPY public/ /app/public
+COPY resources/views /app/resources/views
+COPY src/ /app/src
+COPY storage/ /app/storage
+
+COPY --from=translation /data/ /app/resources/lang
+COPY --from=composer /app/vendor/ /app/vendor
+COPY --from=composer /app/composer.lock /app/
+
+RUN find /app/storage/ -type f -not -name .gitignore -exec rm {} \;
+RUN rm -f /app/config/config.php
+
+# Build the PHP container
+FROM php:7-fpm-alpine
+WORKDIR /var/www
+RUN apk add --no-cache icu-dev && \
+ docker-php-ext-install intl pdo_mysql
+COPY --from=data /app/ /var/www
+RUN chown -R www-data:www-data /var/www/import/ /var/www/storage/ && \
+ rm -r /var/www/html
+
+ARG VERSION
+RUN if [[ ! -f /var/www/storage/app/VERSION ]] && [[ ! -z "${VERSION}" ]]; then echo -n "${VERSION}" > /var/www/storage/app/VERSION; fi
+
+ENV TRUSTED_PROXIES 10.0.0.0/8,::ffff:10.0.0.0/8,\
+ 127.0.0.0/8,::ffff:127.0.0.0/8,\
+ 172.16.0.0/12,::ffff:172.16.0.0/12,\
+ 192.168.0.0/16,::ffff:192.168.0.0/16,\
+ ::1/128,fc00::/7,fec0::/10
diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml
new file mode 100644
index 00000000..f4be4eb2
--- /dev/null
+++ b/docker/docker-compose.yml
@@ -0,0 +1,46 @@
+version: "3.6"
+services:
+ nginx:
+ image: engelsystem-nginx
+ build:
+ context: ..
+ dockerfile: ""
+ ports:
+ - 5000:80
+ networks:
+ - internal
+ depends_on:
+ - engelsystem
+ engelsystem:
+ image: engelsystem
+ build:
+ context: ..
+ dockerfile: ""
+ environment:
+ MYSQL_HOST: database
+ MYSQL_USER: engelsystem
+ MYSQL_PASSWORD: engelsystem
+ MYSQL_DATABASE: engelsystem
+ networks:
+ - internal
+ - database
+ depends_on:
+ - database
+ database:
+ image: mariadb:10.2
+ environment:
+ MYSQL_DATABASE: engelsystem
+ MYSQL_USER: engelsystem
+ MYSQL_PASSWORD: engelsystem
+ MYSQL_RANDOM_ROOT_PASSWORD: 1
+ MYSQL_INITDB_SKIP_TZINFO: "yes"
+ volumes:
+ - db:/var/lib/mysql
+ networks:
+ - database
+volumes:
+ db: {}
+
+networks:
+ internal:
+ database:
diff --git a/docker/nginx/Dockerfile b/docker/nginx/Dockerfile
new file mode 100644
index 00000000..47b3d50e
--- /dev/null
+++ b/docker/nginx/Dockerfile
@@ -0,0 +1,11 @@
+FROM node:10-alpine as themes
+WORKDIR /app
+COPY .babelrc .browserslistrc package.json webpack.config.js yarn.lock /app/
+RUN yarn install
+COPY resources/assets/ /app/resources/assets
+RUN yarn build
+
+FROM nginx:alpine
+RUN mkdir -p /var/www/public/ && touch /var/www/public/index.php
+COPY docker/nginx/nginx.conf /etc/nginx/nginx.conf
+COPY --from=themes /app/public/assets /var/www/public/assets/
diff --git a/docker/nginx/nginx.conf b/docker/nginx/nginx.conf
new file mode 100644
index 00000000..d95c18e2
--- /dev/null
+++ b/docker/nginx/nginx.conf
@@ -0,0 +1,42 @@
+error_log stderr;
+
+events {
+ worker_connections 1024;
+}
+
+http {
+ client_body_temp_path /tmp/client_body_temp;
+ fastcgi_temp_path /tmp/fastcgi_temp;
+ proxy_temp_path /tmp/proxy_temp;
+ scgi_temp_path /tmp/scgi_temp;
+ uwsgi_temp_path /tmp/uwsgi_temp;
+
+ map $http_x_forwarded_proto $forwarded_proto {
+ default $http_x_forwarded_proto;
+ https https;
+ }
+
+ server {
+ include mime.types;
+ access_log off;
+ listen [::]:80 ipv6only=off;
+ proxy_redirect off;
+ proxy_set_header Host $host;
+ proxy_set_header X-Real-IP $remote_addr;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ proxy_set_header X-Forwarded-Proto $forwarded_proto;
+ index index.php;
+ root /var/www/public;
+
+ location / {
+ try_files $uri $uri/ /index.php?$args;
+ }
+
+ location ~ \.php$ {
+ fastcgi_pass engelsystem:9000;
+ fastcgi_index index.php;
+ fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
+ include fastcgi_params;
+ }
+ }
+}