From 243c4c2982552c85d0b60aa98732e1f361e6a3af Mon Sep 17 00:00:00 2001 From: Thibault Debatty <t.debatty@cylab.be> Date: Sun, 13 Aug 2023 20:49:14 +0200 Subject: [PATCH] build docker image --- .gitlab-ci.yml | 18 ++++++++++++++++++ Dockerfile | 42 ++++++++++++++++++++++++++++++++++++++++++ docker/env.default | 36 ++++++++++++++++++++++++++++++++++++ docker/logs.conf | 5 +++++ 4 files changed, 101 insertions(+) create mode 100644 Dockerfile create mode 100644 docker/env.default create mode 100644 docker/logs.conf diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index c1e780a..d216fd6 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -43,3 +43,21 @@ test:gitleaks: - git config --global --add safe.directory $CI_PROJECT_DIR - gitleaks detect -v -c gitleaks.toml ./ +build: + stage: test + ## Run on a gitlab-runner that is configured with docker-in-docker + tags: + - dind + image: docker:20.10.16 + services: + - docker:20.10.16-dind + variables: + DOCKER_TLS_CERTDIR: "/certs" + before_script: + - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY + script: + - docker pull $CI_REGISTRY_IMAGE:latest || true + - docker build --cache-from $CI_REGISTRY_IMAGE:latest --tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA --tag $CI_REGISTRY_IMAGE:latest . + - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA + - docker push $CI_REGISTRY_IMAGE:latest + diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..f9db645 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,42 @@ +# +# monitoring +# Dockerfile used to build the production container +# + +#### Step 1 : composer + +FROM cylab/php74 AS composer + +COPY . /var/www/html +WORKDIR /var/www/html +RUN composer install --no-dev --optimize-autoloader + +#### Step 2 : node + +FROM node:16.15.0-alpine AS node + +COPY . /var/www/html +WORKDIR /var/www/html +RUN npm --version && npm install && npm run prod + +#### Step 3 : the actual docker image + +FROM cylab/laravel74 + +# Custom logs : request time, laravel session +COPY ./docker/logs.conf /etc/apache2/conf-available/logs.conf +RUN a2enconf logs + +# Increase upload limit +RUN sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 20M/g' /usr/local/etc/php/php.ini && \ + sed -i 's/post_max_size = 8M/post_max_size = 20M/g' /usr/local/etc/php/php.ini + +COPY . /var/www/html +COPY ./docker/env.default /var/www/html/.env + +COPY --from=composer /var/www/html/vendor /var/www/html/vendor + +COPY --from=node /var/www/html/public/css /var/www/html/public/css +COPY --from=node /var/www/html/public/js /var/www/html/public/js +COPY --from=node /var/www/html/public/fonts /var/www/html/public/fonts + diff --git a/docker/env.default b/docker/env.default new file mode 100644 index 0000000..3021541 --- /dev/null +++ b/docker/env.default @@ -0,0 +1,36 @@ +# +# monitor/docker/env.default +# provide some default values for the monitor docker container +# + +APP_NAME=Monitor +APP_ENV=prod +APP_KEY=base64:oeFm60LGCyfXgd2MmUs/OVX3n4tJb6DG/BG2SS4DFdo= +APP_DEBUG=false +APP_URL=https://monitor.web-d.be + +LOG_CHANNEL=stack + +DB_CONNECTION=mysql +DB_HOST=mysql +DB_PORT=3306 +DB_DATABASE=laravel +DB_USERNAME=root +DB_PASSWORD=root + +MAIL_DRIVER=smtp +MAIL_HOST=mail +MAIL_PORT= +MAIL_USERNAME= +MAIL_PASSWORD= +MAIL_ENCRYPTION=tls + +BROADCAST_DRIVER=log +CACHE_DRIVER=redis +QUEUE_driver=redis +SESSION_DRIVER=redis + +REDIS_HOST=redis +REDIS_PASSWORD=null +REDIS_PORT=6379 + diff --git a/docker/logs.conf b/docker/logs.conf new file mode 100644 index 0000000..7e8527b --- /dev/null +++ b/docker/logs.conf @@ -0,0 +1,5 @@ +# +# https://cylab.be/blog/244/custom-apache-logs +# + +LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\" %D %{laravel_session}C" combined -- GitLab