From 53ce83a272c636c4eccd043f16215d7475a2d8a9 Mon Sep 17 00:00:00 2001 From: Michael Weimann Date: Mon, 14 Oct 2019 22:23:52 +0200 Subject: Moves docker files from contrib to docker --- README.md | 6 +++--- contrib/.env | 1 - contrib/Dockerfile | 48 ---------------------------------------------- contrib/docker-compose.yml | 46 -------------------------------------------- contrib/nginx/Dockerfile | 11 ----------- contrib/nginx/nginx.conf | 42 ---------------------------------------- docker/.env | 1 + docker/Dockerfile | 48 ++++++++++++++++++++++++++++++++++++++++++++++ docker/docker-compose.yml | 46 ++++++++++++++++++++++++++++++++++++++++++++ docker/nginx/Dockerfile | 11 +++++++++++ docker/nginx/nginx.conf | 42 ++++++++++++++++++++++++++++++++++++++++ 11 files changed, 151 insertions(+), 151 deletions(-) delete mode 100644 contrib/.env delete mode 100644 contrib/Dockerfile delete mode 100644 contrib/docker-compose.yml delete mode 100644 contrib/nginx/Dockerfile delete mode 100644 contrib/nginx/nginx.conf create mode 100644 docker/.env create mode 100644 docker/Dockerfile create mode 100644 docker/docker-compose.yml create mode 100644 docker/nginx/Dockerfile create mode 100644 docker/nginx/nginx.conf diff --git a/README.md b/README.md index 9b4a3aaf..889151e1 100644 --- a/README.md +++ b/README.md @@ -117,14 +117,14 @@ PRODUCTION_REMOTE_PATH # Same as STAGING_REMOTE_PATH but for the production env ### Docker container To build the `engelsystem` and the `engelsystem-nginx` container: ```bash -cd contrib +cd docker docker-compose build ``` or to build the containers separately ```bash -docker build -f contrib/nginx/Dockerfile . -t engelsystem-nginx -docker build -f contrib/Dockerfile . -t engelsystem +docker build -f docker/nginx/Dockerfile . -t engelsystem-nginx +docker build -f docker/Dockerfile . -t engelsystem ``` Import database diff --git a/contrib/.env b/contrib/.env deleted file mode 100644 index 5f8d43b8..00000000 --- a/contrib/.env +++ /dev/null @@ -1 +0,0 @@ -COMPOSE_PROJECT_NAME="engelsystem" diff --git a/contrib/Dockerfile b/contrib/Dockerfile deleted file mode 100644 index 013ccf1d..00000000 --- a/contrib/Dockerfile +++ /dev/null @@ -1,48 +0,0 @@ -# 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/contrib/docker-compose.yml b/contrib/docker-compose.yml deleted file mode 100644 index 4624cce4..00000000 --- a/contrib/docker-compose.yml +++ /dev/null @@ -1,46 +0,0 @@ -version: "3.6" -services: - nginx: - image: engelsystem-nginx - build: - context: .. - dockerfile: contrib/nginx/Dockerfile - ports: - - 5000:80 - networks: - - internal - depends_on: - - engelsystem - engelsystem: - image: engelsystem - build: - context: .. - dockerfile: contrib/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/contrib/nginx/Dockerfile b/contrib/nginx/Dockerfile deleted file mode 100644 index 9f5dcb3b..00000000 --- a/contrib/nginx/Dockerfile +++ /dev/null @@ -1,11 +0,0 @@ -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 contrib/nginx/nginx.conf /etc/nginx/nginx.conf -COPY --from=themes /app/public/assets /var/www/public/assets/ diff --git a/contrib/nginx/nginx.conf b/contrib/nginx/nginx.conf deleted file mode 100644 index d95c18e2..00000000 --- a/contrib/nginx/nginx.conf +++ /dev/null @@ -1,42 +0,0 @@ -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; - } - } -} 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; + } + } +} -- cgit v1.2.3-54-g00ecf