Improve configuration with Makefile

- Add Makefile
 - Add environment configuration file
 - Use env with docker-compose and Makefile"
This commit is contained in:
Vincent Letourneau
2017-07-27 17:31:40 +02:00
parent 12f1c309e5
commit 69022ddaff
3 changed files with 92 additions and 13 deletions

10
.env Normal file
View File

@@ -0,0 +1,10 @@
#!/usr/bin/env bash
# See https://docs.docker.com/compose/environment-variables/#the-env-file
MYSQL_DUMPS_DIR=data/db/dumps
MYSQL_DATABASE=test
MYSQL_ROOT_USER=root
MYSQL_ROOT_PASSWORD=root
MYSQL_USER=dev
MYSQL_PASSWORD=dev

67
Makefile Normal file
View File

@@ -0,0 +1,67 @@
# Makefile for Docker Nginx PHP Composer MySQL
# config environment
include .env
help:
@echo ""
@echo "usage: make COMMAND"
@echo ""
@echo "Commands:"
@echo " apidoc Generate documentation of API"
@echo " clean Clean directories for reset"
@echo " composer-up Update php composer"
@echo " docker-start Create and start containers"
@echo " docker-stop Stop all services"
@echo " docker-sweep Sweep old containers and volumes"
@echo " gencerts Generate SSL certificates"
@echo " mysql-dump Create backup of whole database"
@echo " mysql-restore Restore backup from whole database"
@echo " test Test application"
init:
@cp $(PWD)/web/app/composer.json.dist $(PWD)/web/app/composer.json
apidoc:
@docker exec -i $(shell docker-compose ps -q php) php ./app/vendor/apigen/apigen/bin/apigen generate -s app/src -d app/doc
clean:
@rm -Rf data/db/mysql/*
@rm -Rf data/db/dumps/*
@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/*
composer-up:
@docker run --rm -v $(PWD)/web/app:/app composer/composer update
docker-start: init
@echo "Docker is running..."
docker-compose up -d;
docker-stop:
docker-compose stop
docker-compose kill
docker-compose rm -f
@make clean
docker-sweep:
@docker ps -aq | xargs docker rm
@docker volume ls -qf dangling=true | xargs docker volume rm
gen-certs:
@docker run --rm -v $(PWD)/etc/ssl:/certificates -e "SERVER=localhost" jacoelho/generate-certificate
mysql-dump:
@mkdir -p $(MYSQL_DUMPS_DIR)
@docker exec -i $(shell docker-compose ps -q mysqldb) mysqldump --all-databases -u"$(MYSQL_ROOT_USER)" -p"$(MYSQL_ROOT_PASSWORD)" > $(MYSQL_DUMPS_DIR)/db.sql
mysql-restore:
@docker exec -i mysql mysql -u"$(MYSQL_ROOT_USER)" -p"$(MYSQL_ROOT_PASSWORD)" < $(MYSQL_DUMPS_DIR)/db.sql
test:
@docker exec -i $(shell docker-compose ps -q php) app/vendor/bin/phpunit --colors=always --configuration app/
.PHONY: clean

View File

@@ -1,4 +1,4 @@
version: '2'
version: '3'
services:
web:
image: nginx:latest
@@ -11,18 +11,18 @@ services:
- "./etc/ssl:/etc/ssl"
- "./web:/web"
depends_on:
- "php"
- "mysqldb"
- php
- mysqldb
php:
image: nanoninja/php-fpm
restart: always
volumes:
- "./etc/php/php.ini:/usr/local/etc/php/conf.d/php.ini"
- ./web:/web
- "./web:/var/www/html"
composer:
image: composer/composer
volumes:
- ./web/app:/app
- "./web/app:/app"
command: install
myadmin:
image: phpmyadmin/phpmyadmin
@@ -34,17 +34,19 @@ services:
- PMA_HOST=mysql
restart: always
depends_on:
- "mysqldb"
- mysqldb
mysqldb:
image: mysql
container_name: mysql
restart: always
env_file:
- ".env"
environment:
- MYSQL_DATABASE=test
- MYSQL_ROOT_PASSWORD=root
- MYSQL_USER=dev
- MYSQL_PASSWORD=dev
- MYSQL_DATABASE=${MYSQL_DATABASE}
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
- MYSQL_USER=${MYSQL_USER}
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
ports:
- 3306:3306
- "3306:3306"
volumes:
- ./data/db/mysql:/var/lib/mysql
- "./data/db/mysql:/var/lib/mysql"