Skip to content

Commit

Permalink
first commit
Browse files Browse the repository at this point in the history
  • Loading branch information
sawon authored and sawon committed Oct 26, 2022
0 parents commit 2c29616
Show file tree
Hide file tree
Showing 43 changed files with 1,136 additions and 0 deletions.
20 changes: 20 additions & 0 deletions .env
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
#!/usr/bin/env bash

# See https://docs.docker.com/compose/environment-variables/#the-env-file

# Nginx
NGINX_HOST=localhost

# PHP

# See https://hub.docker.com/r/nanoninja/php-fpm/tags/
PHP_VERSION=latest

# MySQL
MYSQL_VERSION=8.0.31
MYSQL_HOST=mysql
MYSQL_DATABASE=test
MYSQL_ROOT_USER=root
MYSQL_ROOT_PASSWORD=root
MYSQL_USER=dev
MYSQL_PASSWORD=dev
28 changes: 28 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Global
.*.swp
.DS_Store

# Application
web/app/composer.json
web/app/composer.lock
web/app/vendor/
web/app/doc/
web/app/report/
data/

# PHPStorm
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/dictionaries

# Netbeans
nbproject/
/nbproject/
/nbproject/private/
/nbproject/private/private.properties

# VSCode
.vscode/

# SSL Certs
etc/ssl/
8 changes: 8 additions & 0 deletions .idea/.gitignore

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions .idea/modules.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions .idea/oscar-interview3.iml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

30 changes: 30 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
sudo: required

env:
DOCKER_COMPOSE_VERSION: 1.18.0

services:
- docker

before_install:
- sudo apt update
- sudo rm /usr/local/bin/docker-compose
- curl -L https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-`uname -s`-`uname -m` > docker-compose
- chmod +x docker-compose
- sudo mv docker-compose /usr/local/bin
- docker-compose --version

before_script:
- sudo make docker-start
- sleep 2m

script:
- sudo make apidoc
- sudo make gen-certs
- sudo make mysql-dump
- sudo make mysql-restore
- sudo make phpmd
- sudo make test

after_script:
- sudo make docker-stop
82 changes: 82 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
# Makefile for Docker Nginx PHP Composer MySQL

include .env

# MySQL
MYSQL_DUMPS_DIR=data/db/dumps

help:
@echo ""
@echo "usage: make COMMAND"
@echo ""
@echo "Commands:"
@echo " apidoc Generate documentation of API"
@echo " code-sniff Check the API with PHP Code Sniffer (PSR2)"
@echo " clean Clean directories for reset"
@echo " composer-up Update PHP dependencies with composer"
@echo " docker-start Create and start containers"
@echo " docker-stop Stop and clear all services"
@echo " gen-certs Generate SSL certificates"
@echo " logs Follow log output"
@echo " mysql-dump Create backup of all databases"
@echo " mysql-restore Restore backup of all databases"
@echo " phpmd Analyse the API with PHP Mess Detector"
@echo " test Test application"

init:
@$(shell cp -n $(shell pwd)/web/app/composer.json.dist $(shell pwd)/web/app/composer.json 2> /dev/null)

apidoc:
@docker run --rm -v $(shell pwd):/data phpdoc/phpdoc -i=vendor/ -d /data/web/app/src -t /data/web/app/doc
@make resetOwner

clean:
@rm -Rf data/db/mysql/*
@rm -Rf $(MYSQL_DUMPS_DIR)/*
@rm -Rf web/app/vendor
@rm -Rf web/app/composer.lock
@rm -Rf web/app/doc
@rm -Rf web/app/report
@rm -Rf etc/ssl/*

code-sniff:
@echo "Checking the standard code..."
@docker-compose exec -T php ./app/vendor/bin/phpcs -v --standard=PSR2 app/src

composer-up:
@docker run --rm -v $(shell pwd)/web/app:/app composer update

docker-start: init
docker-compose up -d

docker-stop:
@docker-compose down -v
@make clean

gen-certs:
@docker run --rm -v $(shell pwd)/etc/ssl:/certificates -e "SERVER=$(NGINX_HOST)" jacoelho/generate-certificate

logs:
@docker-compose logs -f

mysql-dump:
@mkdir -p $(MYSQL_DUMPS_DIR)
@docker exec $(shell docker-compose ps -q mysqldb) mysqldump --all-databases -u"$(MYSQL_ROOT_USER)" -p"$(MYSQL_ROOT_PASSWORD)" > $(MYSQL_DUMPS_DIR)/db.sql 2>/dev/null
@make resetOwner

mysql-restore:
@docker exec -i $(shell docker-compose ps -q mysqldb) mysql -u"$(MYSQL_ROOT_USER)" -p"$(MYSQL_ROOT_PASSWORD)" < $(MYSQL_DUMPS_DIR)/db.sql 2>/dev/null

phpmd:
@docker-compose exec -T php \
./app/vendor/bin/phpmd \
./app/src text cleancode,codesize,controversial,design,naming,unusedcode

test: code-sniff
@docker-compose exec -T php ./app/vendor/bin/phpunit --colors=always --configuration ./app/
@make resetOwner

resetOwner:
@$(shell chown -Rf $(SUDO_USER):$(shell id -g -n $(SUDO_USER)) $(MYSQL_DUMPS_DIR) "$(shell pwd)/etc/ssl" "$(shell pwd)/web/app" 2> /dev/null)

.PHONY: clean test code-sniff init
Loading

0 comments on commit 2c29616

Please sign in to comment.