From 4da6e4b0644d8d584b7c18c5821bece2a16cb62d Mon Sep 17 00:00:00 2001 From: binaryDiv Date: Sun, 28 Jun 2020 17:20:42 +0200 Subject: [PATCH] add Docker and Drone boilerplate --- .drone.yml | 45 +++++++++++++++++++++++++++++++ .env | 1 + Dockerfile | 9 +++++++ Makefile | 35 ++++++++++++++++++++++++ docker/docker-compose.local.yml | 10 +++++++ docker/docker-compose.testing.yml | 17 ++++++++++++ 6 files changed, 117 insertions(+) create mode 100644 .drone.yml create mode 100644 .env create mode 100644 Dockerfile create mode 100644 Makefile create mode 100644 docker/docker-compose.local.yml create mode 100644 docker/docker-compose.testing.yml diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..d2658c8 --- /dev/null +++ b/.drone.yml @@ -0,0 +1,45 @@ +--- +kind: pipeline +type: docker +name: default + +steps: + - name: install + image: composer + volumes: + - name: composer-cache + path: /tmp/cache + environment: + COMPOSER_CACHE_DIR: /tmp/cache + commands: + - composer install --no-progress --no-interaction --no-dev --optimize-autoloader + + - name: unit tests + image: php:7.4 + commands: + - vendor/bin/phpunit -c phpunit.xml + + - name: build image + image: docker + volumes: + - name: dockersock + path: /var/run/docker.sock + commands: + - docker build -t notecat:latest . + + - name: deploy on testing + image: docker/compose + volumes: + - name: dockersock + path: /var/run/docker.sock + commands: + - docker-compose -f docker/docker-compose.testing.yml up --build --detach + +volumes: + - name: composer-cache + host: + path: /tmp/drone/composer-cache + + - name: dockersock + host: + path: /var/run/docker.sock diff --git a/.env b/.env new file mode 100644 index 0000000..726631f --- /dev/null +++ b/.env @@ -0,0 +1 @@ +COMPOSE_PROJECT_NAME=notecat diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..dc2422b --- /dev/null +++ b/Dockerfile @@ -0,0 +1,9 @@ +FROM php:7.4-apache + +WORKDIR /var/www + +RUN sed -ri -e 's!/var/www/html!/var/www/public!g' /etc/apache2/sites-available/*.conf + +COPY vendor/ /var/www/vendor/ +COPY public/ /var/www/public/ +COPY src/ /var/www/src/ diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..ad1d8b9 --- /dev/null +++ b/Makefile @@ -0,0 +1,35 @@ +### Variables +DOCKER_COMPOSE_CMD := docker-compose -f docker/docker-compose.local.yml +COMPOSER := composer +PHPUNIT := vendor/bin/phpunit + +.PHONY: build up down logs install test phpunit open_coverage + + +### Container management +build: + ${DOCKER_COMPOSE_CMD} build + +up: + ${DOCKER_COMPOSE_CMD} up --build --detach + +down: + ${DOCKER_COMPOSE_CMD} down + +logs: + ${DOCKER_COMPOSE_CMD} logs -f || true + + +### Dependency management +install: + ${COMPOSER} install + + +### Test suites +test: phpunit + +phpunit: + ${PHPUNIT} -c phpunit.xml + +open_coverage: + ${BROWSER} coverage/index.html diff --git a/docker/docker-compose.local.yml b/docker/docker-compose.local.yml new file mode 100644 index 0000000..d2344e3 --- /dev/null +++ b/docker/docker-compose.local.yml @@ -0,0 +1,10 @@ +version: '3' + +services: + web: + build: .. + restart: always + ports: + - 8080:80 + volumes: + - ../:/var/www/ diff --git a/docker/docker-compose.testing.yml b/docker/docker-compose.testing.yml new file mode 100644 index 0000000..6c6be52 --- /dev/null +++ b/docker/docker-compose.testing.yml @@ -0,0 +1,17 @@ +version: '3' + +services: + web: + build: .. + restart: always + networks: + - traefik + labels: + - traefik.enable=true + - traefik.http.routers.notecat.rule=Host(`notecat.dev.0xbd.space`) + - traefik.http.routers.notecat.tls=true + - traefik.http.routers.notecat.tls.certresolver=letsencrypt + +networks: + traefik: + external: true