From 96e45a8a6b6aadd01b0a996e5a5a234954d3ca8c Mon Sep 17 00:00:00 2001 From: Andy Postnikov Date: Wed, 12 Aug 2020 18:06:08 +0300 Subject: [PATCH] Add postgresql support --- .env.default | 2 ++ Makefile | 20 ++++++++++++-------- docker/docker-compose.override.yml.default | 15 +++++++++++++++ 3 files changed, 29 insertions(+), 8 deletions(-) diff --git a/.env.default b/.env.default index eff729121..85b484cd4 100644 --- a/.env.default +++ b/.env.default @@ -18,11 +18,13 @@ IMAGE_REDIS=redis:5-alpine IMAGE_DRIVER=zenika/alpine-chrome CLEAR_FRONT_PACKAGES=no ADD_PHP_EXT= +#ADD_PHP_EXT=php7-pdo_pgsql postgresql-client postgresql-contrib gnu-libiconv wkhtmltopdf MAIN_DOMAIN_NAME=docker.localhost DB_URL=sqlite:./../.cache/d8.sqlite # Faster but data will be lost on php container recreation #DB_URL=sqlite:///dev/shm/d8.sqlite #DB_URL=mysql://d8:d8@mysql/d8 +#DB_URL=pgsql://d9:d9root@postgresql/d9 # Include path to this folder to your .gitignore if you override it DB_DATA_DIR=../.cache #DB_DATA_DIR=/dev/shm diff --git a/Makefile b/Makefile index 89e045593..800e89bf7 100644 --- a/Makefile +++ b/Makefile @@ -24,9 +24,13 @@ CGID ?= $(LOCAL_GID) # Define network name. COMPOSE_NET_NAME := $(COMPOSE_PROJECT_NAME)_front -# Determine mysql data directory if defined -ifeq ($(shell docker-compose config --services | grep mysql),mysql) - MYSQL_DIR=$(shell cd docker && realpath $(DB_DATA_DIR))/$(COMPOSE_PROJECT_NAME)_mysql +SDC_SERVICES=$(shell docker-compose config --services) +# Determine database data directory if defined +ifeq ($(findstring mysql,$(SDC_SERVICES)),mysql) + DB_MOUNT_DIR=$(shell cd docker && realpath $(DB_DATA_DIR))/$(COMPOSE_PROJECT_NAME)_mysql +endif +ifeq ($(findstring postgresql,$(SDC_SERVICES)),postgresql) + DB_MOUNT_DIR=$(shell cd docker && realpath $(DB_DATA_DIR))/$(COMPOSE_PROJECT_NAME)_pgsql endif # Define current directory only once @@ -59,8 +63,8 @@ ifeq ($(strip $(COMPOSE_PROJECT_NAME)),projectname) $(info Please review your project settings and run `make all` again.) exit 1 endif -ifdef MYSQL_DIR - mkdir -p $(MYSQL_DIR) && chmod 777 $(MYSQL_DIR) +ifdef DB_MOUNT_DIR + $(shell [ ! -d $(DB_MOUNT_DIR) ] && mkdir -p $(DB_MOUNT_DIR) && chmod 777 $(DB_MOUNT_DIR)) endif make -s down @echo "Updating containers..." @@ -148,9 +152,9 @@ clean: info make -s down $(eval SCAFFOLD = $(shell docker run --rm -v $(CURDIR):/mnt -w /mnt --user $(CUID):$(CGID) $(IMAGE_PHP) composer run-script list-scaffold-files | grep -P '^(?!>)')) @docker run --rm --user 0:0 -v $(CURDIR):/mnt -w /mnt -e RMLIST="$(addprefix web/,$(SCAFFOLD)) $(DIRS)" $(IMAGE_PHP) sh -c 'for i in $$RMLIST; do rm -fr $$i && echo "Removed $$i"; done' -ifdef MYSQL_DIR - @echo "Removing mysql data from $(MYSQL_DIR) ..." - docker run --rm --user 0:0 -v $(shell dirname $(MYSQL_DIR)):/mnt $(IMAGE_PHP) sh -c "rm -fr /mnt/`basename $(MYSQL_DIR)`" +ifdef DB_MOUNT_DIR + @echo "Clean-up database data from $(DB_MOUNT_DIR) ..." + docker run --rm --user 0:0 -v $(shell dirname $(DB_MOUNT_DIR)):/mnt $(IMAGE_PHP) sh -c "rm -fr /mnt/`basename $(DB_MOUNT_DIR)`" endif ifeq ($(CLEAR_FRONT_PACKAGES), yes) make clear-front diff --git a/docker/docker-compose.override.yml.default b/docker/docker-compose.override.yml.default index 7727249b2..32891c910 100644 --- a/docker/docker-compose.override.yml.default +++ b/docker/docker-compose.override.yml.default @@ -10,6 +10,7 @@ services: - "./90-mail.ini:/etc/php7/conf.d/90-mail.ini:z" # depends_on: # - mysql +# - postgresql # Uncomment next line if you need PHP XDebug. # command: php-fpm7 -F -d zend_extension=xdebug.so @@ -35,6 +36,20 @@ services: # MYSQL_ROOT_PASSWORD: d8root # restart: always # networks: +# - front + +# postgresql: +# image: postgres:12.2-alpine +# container_name: "${COMPOSE_PROJECT_NAME}_pgsql" +# volumes: +# - ${DB_DATA_DIR}/${COMPOSE_PROJECT_NAME}_pgsql:/var/lib/postgresql/data:Z +# environment: +# POSTGRES_DB: d9 +# POSTGRES_USER: d9 +# POSTGRES_PASSWORD: d9root +# PGDATA: /var/lib/postgresql/data +# restart: always +# networks: # - front mailhog: