From f52a4d26963679acb07fb2861c4ba82d2078f5ce Mon Sep 17 00:00:00 2001 From: Anthony Murphy Date: Fri, 15 Nov 2024 17:38:00 +1100 Subject: [PATCH 01/13] [BUILD] add Docker files for PHP SDK setup in Quickstart application LRN-45518 --- docker/nginx/Dockerfile | 11 ++++++++++ docker/nginx/default.conf | 19 ++++++++++++++++++ docker/php/Dockerfile | 42 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 72 insertions(+) create mode 100644 docker/nginx/Dockerfile create mode 100644 docker/nginx/default.conf create mode 100644 docker/php/Dockerfile diff --git a/docker/nginx/Dockerfile b/docker/nginx/Dockerfile new file mode 100644 index 0000000..537f000 --- /dev/null +++ b/docker/nginx/Dockerfile @@ -0,0 +1,11 @@ +FROM nginx:stable-alpine + +# Copy custom nginx configuration +COPY ./docker/nginx/default.conf /etc/nginx/conf.d/default.conf + +WORKDIR /var/www/html + +# Optional: Add any additional Nginx-specific configurations or setup +EXPOSE 8000 + +CMD ["nginx", "-g", "daemon off;"] diff --git a/docker/nginx/default.conf b/docker/nginx/default.conf new file mode 100644 index 0000000..a5ec324 --- /dev/null +++ b/docker/nginx/default.conf @@ -0,0 +1,19 @@ +server { + listen 8000; + server_name localhost; + root /var/www/html/docs/quickstart; + index index.php index.html; + + location / { + try_files $uri $uri/ /index.php?$query_string; + } + + location ~ \.php$ { + fastcgi_pass php:9000; + fastcgi_index index.php; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + include fastcgi_params; + fastcgi_split_path_info ^(.+\.php)(/.+)$; + fastcgi_param PATH_INFO $fastcgi_path_info; + } +} diff --git a/docker/php/Dockerfile b/docker/php/Dockerfile new file mode 100644 index 0000000..454e5ac --- /dev/null +++ b/docker/php/Dockerfile @@ -0,0 +1,42 @@ +ARG PHP_VERSION=8.3 +ARG DEBIAN_VERSION=bookworm +ARG COMPOSER_VERSION=2.7.6 + +FROM composer:${COMPOSER_VERSION} as composer + +FROM php:${PHP_VERSION}-fpm-${DEBIAN_VERSION} + +COPY --from=composer /usr/bin/composer /usr/local/bin/composer + +# Install nginx and other dependencies +RUN apt-get update && apt-get install -y --no-install-recommends \ + git=1:2.* \ + libzip-dev=1.* \ + unzip=6.0* \ + zip=3.0* \ + nginx=1.22.* \ + && docker-php-ext-install zip \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* + +# Configure PHP-FPM to listen on TCP/IP +RUN sed -i 's/listen = \/run\/php-fpm.sock/listen = 127.0.0.1:9000/g' /usr/local/etc/php-fpm.d/www.conf + +# Configure nginx +COPY docker/nginx/default.conf /etc/nginx/conf.d/default.conf +RUN rm -f /etc/nginx/sites-enabled/default + +WORKDIR /var/www/html + +# Copy start script +COPY <<'EOF' /usr/local/bin/start.sh +#!/bin/sh +php-fpm -D +nginx -g 'daemon off;' +EOF + +RUN chmod +x /usr/local/bin/start.sh + +EXPOSE 8000 + +CMD ["/usr/local/bin/start.sh"] From 1bdd98883cfa08fb5b88e299242758418743703b Mon Sep 17 00:00:00 2001 From: Anthony Murphy Date: Fri, 15 Nov 2024 17:42:52 +1100 Subject: [PATCH 02/13] [BUILD] add docker-compose.yml to build NGINX and PHP containers LRN-45518 --- docker-compose.yml | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 docker-compose.yml diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..5c43b34 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,41 @@ +version: '3.8' + +networks: + quickstart-network: + driver: bridge + +services: + nginx: + build: + context: . + dockerfile: docker/nginx/Dockerfile + ports: + - "8000:8000" + volumes: + - .:/var/www/html + environment: + APPLICATION_SERVER_LANGUAGE: php + UPSTREAM_APPLICATION_SERVICE: php:9000 + depends_on: + - php + networks: + quickstart-network: + aliases: + - nginx + + php: + build: + context: . + dockerfile: docker/php/Dockerfile + args: + PHP_VERSION: ${PHP_VERSION:-8.3} + DEBIAN_VERSION: ${DEBIAN_VERSION:-bookworm} + COMPOSER_VERSION: ${COMPOSER_VERSION:-2.7.6} + volumes: + - .:/var/www/html + environment: + - SERVER_NAME=localhost + networks: + quickstart-network: + aliases: + - php From e1e1ad6cc4738c29c5c884b172952c79c702afb5 Mon Sep 17 00:00:00 2001 From: Anthony Murphy Date: Fri, 15 Nov 2024 17:44:23 +1100 Subject: [PATCH 03/13] [BUILD] update quickstart target to run either docker container or local php LRN-45518 --- Makefile | 85 ++++++++++++++++++++++++-------------------------------- 1 file changed, 36 insertions(+), 49 deletions(-) diff --git a/Makefile b/Makefile index 537c5a6..d3fa1e8 100644 --- a/Makefile +++ b/Makefile @@ -1,59 +1,48 @@ ARGS_PHPUNIT ?= DOCKER := $(if $(LRN_SDK_NO_DOCKER),,$(shell which docker)) +DOCKER_COMPOSE := docker compose # PHP Evolution SUPPORTED_PHP_VERSIONS = 7.1 7.2 7.3 7.4 8.0 8.1 8.2 8.3 -PHP_VERSION = $(lastword ${SUPPORTED_PHP_VERSIONS}) +PHP_VERSION ?= $(lastword ${SUPPORTED_PHP_VERSIONS}) DEBIAN_VERSION-7.1 = buster DEBIAN_VERSION-7.2 = buster DEBIAN_VERSION-7.3 = bullseye DEBIAN_VERSION-7.4 = bullseye DEBIAN_VERSION-8.0 = bullseye DEBIAN_VERSION-def = bookworm -DEBIAN_VERSION = $(or $(DEBIAN_VERSION-$(PHP_VERSION)),$(DEBIAN_VERSION-def)) +DEBIAN_VERSION ?= $(or $(DEBIAN_VERSION-$(PHP_VERSION)),$(DEBIAN_VERSION-def)) COMPOSER_VERSION-7.1 = 2.2 COMPOSER_VERSION-def = 2.7.6 -COMPOSER_VERSION = $(or $(COMPOSER_VERSION-$(PHP_VERSION)),$(COMPOSER_VERSION-def)) -LOCALHOST = 0.0.0.0 +COMPOSER_VERSION ?= $(or $(COMPOSER_VERSION-$(PHP_VERSION)),$(COMPOSER_VERSION-def)) -IMAGE = php-cli-composer:$(PHP_VERSION)-$(DEBIAN_VERSION)-$(COMPOSER_VERSION) +export PHP_VERSION +export DEBIAN_VERSION +export COMPOSER_VERSION TARGETS = all build devbuild prodbuild \ quickstart check-quickstart install-vendor \ dist dist-test dist-zip release \ lint test test-coverage test-integration-env test-unit \ clean clean-dist clean-test clean-vendor + .PHONY: $(TARGETS) .default: all ifneq (,$(DOCKER)) -TTYFLAGS := $(shell if [ -t 0 ] ; then echo "-it"; else echo "-t"; fi) -# Re-run the make command in a container -DKR = docker container run $(TTYFLAGS) --rm \ - -v $(CURDIR):/srv/sdk/php:z,delegated \ - -v lrn-sdk-php_cache:/root/.composer \ - -w /srv/sdk/php \ - -e LRN_SDK_NO_DOCKER=1 \ - -e ENV -e REGION -e VER \ - -p 8000:8000 \ - $(if $(findstring dev,$(ENV)),--net host) \ - $(IMAGE) - -$(TARGETS): $(if $(shell docker image ls -q --filter reference=$(IMAGE)),,docker-build) - $(DKR) make -e MAKEFLAGS="$(MAKEFLAGS)" $@ - -docker-build: - docker image build \ - --progress plain \ - --build-arg PHP_VERSION=$(PHP_VERSION) \ - --build-arg DEBIAN_VERSION=$(DEBIAN_VERSION) \ - --build-arg COMPOSER_VERSION=$(COMPOSER_VERSION) \ - -t $(IMAGE) . -.PHONY: docker-build lrn-test-all lrn-test-clean +# Docker-based targets +docker-targets = quickstart +$(docker-targets): docker-build + $(DOCKER_COMPOSE) run --rm php make -e MAKEFLAGS="$(MAKEFLAGS)" $@ +endif +docker-build: install-vendor + $(DOCKER_COMPOSE) build php nginx -else +.PHONY: docker-build + +# Local development targets without Docker DIST_PREFIX = learnosity_sdk- SRC_VERSION := $(shell git describe | sed s/^v//) DIST = $(DIST_PREFIX)$(SRC_VERSION) @@ -67,12 +56,24 @@ PHPUNIT = ./vendor/bin/phpunit ### # quickstart rules ### -quickstart: VENDOR_FLAGS = --no-dev -quickstart: install-vendor - cd docs/quickstart && php -S $(LOCALHOST):8000 +quickstart: +ifneq (,$(DOCKER)) + $(MAKE) docker-quickstart +else + $(MAKE) local-quickstart +endif + +docker-quickstart: VENDOR_FLAGS = --no-dev +docker-quickstart: install-vendor + $(DOCKER_COMPOSE) up -d + +local-quickstart: VENDOR_FLAGS = --no-dev +local-quickstart: install-vendor + php -S localhost:8000 -t docs/quickstart check-quickstart: vendor/autoload.php $(COMPOSER) install $(COMPOSER_INSTALL_FLAGS) --no-dev; + ### # internal tooling rules #### @@ -103,15 +104,11 @@ test-integration-env: build ### # dist rules -# -# build a dist zip file from the distdir, THEN run the tests in the dist dir, -# to avoid polluting the distfile with dev dependencies ### dist: dist-test -# We want to clean first before copying into the .distdir so that we have a clean copy dist-zip: clean-test clean-dist - mkdir -p .$(DIST) # use a hidden directory so that it doesn't get copied into itself + mkdir -p .$(DIST) cp -R * .version .$(DIST) mv .$(DIST) $(DIST) rm -rf $(DIST)/vendor/ @@ -119,7 +116,6 @@ dist-zip: clean-test clean-dist rm -rf $(DIST)/release.sh zip -qr $(DIST).zip $(DIST) -# run tests in the distdir dist-test: dist-zip install-vendor $(PHPUNIT) --do-not-cache-result --no-logging --configuration=$(DIST)/phpunit.xml @@ -132,6 +128,7 @@ composer.lock: composer.json clean: clean-dist clean-test clean-vendor rm -rf $(DIST_PREFIX)*.zip + $(DOCKER_COMPOSE) down -v clean-dist: rm -rf $(DIST_PREFIX)*/ @@ -145,16 +142,7 @@ clean-vendor: rm -rf vendor rm -f composer.lock -# Aliases - -devbuild: build -prodbuild: dist - -# The following are real targets, not phony ones - -vendor: - $(COMPOSER) install $(COMPOSER_INSTALL_FLAGS) - +# Package contents PKG_CONTENTS = .version \ CONTRIBUTING.md LICENSE.md README.md REFERENCE.md ChangeLog.md \ composer.json bootstrap.php phpunit.xml \ @@ -169,4 +157,3 @@ $(DIST)/vendor: $(DIST) $(DIST).zip: $(DIST)/vendor zip -qr $(DIST).zip $(DIST) -endif From be2b85ffe5a894db945a4b0688d6de1e003ea9cf Mon Sep 17 00:00:00 2001 From: Anthony Murphy Date: Fri, 15 Nov 2024 17:47:20 +1100 Subject: [PATCH 04/13] [DOC] update docs to detail how to run with docker or with a local php server LRN-45518 --- README.md | 41 +++++++++++++++++++++++++++++++++-------- 1 file changed, 33 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index ea38b53..3806592 100644 --- a/README.md +++ b/README.md @@ -100,14 +100,39 @@ For production use, you should install the SDK using the Composer package manage ## Quick start guide Let's take a look at a simple example of the SDK in action. In this example, we'll load an assessment into the browser. -### **Start up your web server** -You can start the demo by running the following command in the SDK directory: - - make quickstart - -If your PHP server is up, we'll assume that your web server is available at this local address: - - http://localhost:8000 +### Running the Quickstart Application + +### **Option 1: Running with Docker (Recommended)** +To run the quickstart application using Docker, ensure you have Docker and Docker Compose installed on your system. Then follow these steps: + +1. Clone the repository (if you haven't already): + ``` + git clone https://github.com/Learnosity/learnosity-sdk-php.git + cd learnosity-sdk-php + ``` + +2. Start the Docker containers: + ``` + make quickstart + ``` + +### **Option 2: Running Locally** +If you prefer to run the application locally without Docker, follow these prerequisites: + +1. Clone the repository (if you haven't already): + ``` + git clone https://github.com/Learnosity/learnosity-sdk-php.git + cd learnosity-sdk-php + ``` +2. Ensure you have PHP 8.x installed +3. Install Composer (https://getcomposer.org/download/) + +4. Start the built-in PHP development server: + ``` + make quickstart + ``` + +**Note:** Local setup requires PHP 8 runtime libraries and may have additional system dependencies. The Docker method provides a more consistent and isolated environment. (For more information about the web server configuration, [click here](https://help.learnosity.com/hc/en-us/articles/360000757757-Environment-Setup-Guide)) From e0309baa6d416e1ca1ac873b456aacc5f93d0323 Mon Sep 17 00:00:00 2001 From: Anthony Murphy Date: Fri, 15 Nov 2024 17:53:31 +1100 Subject: [PATCH 05/13] [BUILD] give the containers more useful name LRN-45518 --- docker-compose.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docker-compose.yml b/docker-compose.yml index 5c43b34..62d0e0e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -6,6 +6,7 @@ networks: services: nginx: + container_name: learnosity-php-sdk-nginx build: context: . dockerfile: docker/nginx/Dockerfile @@ -24,6 +25,7 @@ services: - nginx php: + container_name: learnosity-php-sdk-php-frm build: context: . dockerfile: docker/php/Dockerfile From 05ea1079e036f72b9b0dacf866f58c56f289b71e Mon Sep 17 00:00:00 2001 From: Anthony Murphy Date: Fri, 15 Nov 2024 18:26:21 +1100 Subject: [PATCH 06/13] [DOC] update changelog to include this fix as unreleased --- ChangeLog.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ChangeLog.md b/ChangeLog.md index bee65c7..1228014 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). ## [Unreleased] +### Fixed +- Fixed Quickstart app so that it runs in a Docker container or with a local PHP server ## [v1.0.5] - 2024-10-14 ### Fixed From b33b0bd05a0b767df8ff6475824b387267856c85 Mon Sep 17 00:00:00 2001 From: Anthony Murphy Date: Fri, 15 Nov 2024 18:59:29 +1100 Subject: [PATCH 07/13] [DOC] fix Markup formatting --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 3806592..82085a9 100644 --- a/README.md +++ b/README.md @@ -106,12 +106,14 @@ Let's take a look at a simple example of the SDK in action. In this example, we' To run the quickstart application using Docker, ensure you have Docker and Docker Compose installed on your system. Then follow these steps: 1. Clone the repository (if you haven't already): + ``` git clone https://github.com/Learnosity/learnosity-sdk-php.git cd learnosity-sdk-php ``` 2. Start the Docker containers: + ``` make quickstart ``` @@ -120,14 +122,17 @@ To run the quickstart application using Docker, ensure you have Docker and Docke If you prefer to run the application locally without Docker, follow these prerequisites: 1. Clone the repository (if you haven't already): + ``` git clone https://github.com/Learnosity/learnosity-sdk-php.git cd learnosity-sdk-php ``` + 2. Ensure you have PHP 8.x installed 3. Install Composer (https://getcomposer.org/download/) 4. Start the built-in PHP development server: + ``` make quickstart ``` From 21ce36fb0446a079982fe001b363a1b0e8bd1ffe Mon Sep 17 00:00:00 2001 From: Anthony Murphy Date: Fri, 15 Nov 2024 19:12:37 +1100 Subject: [PATCH 08/13] [DOC] add language to code blocks LRN-45518 --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 82085a9..5250a61 100644 --- a/README.md +++ b/README.md @@ -107,14 +107,14 @@ To run the quickstart application using Docker, ensure you have Docker and Docke 1. Clone the repository (if you haven't already): - ``` + ```bash git clone https://github.com/Learnosity/learnosity-sdk-php.git cd learnosity-sdk-php ``` 2. Start the Docker containers: - ``` + ```bash make quickstart ``` @@ -123,7 +123,7 @@ If you prefer to run the application locally without Docker, follow these prereq 1. Clone the repository (if you haven't already): - ``` + ```bash git clone https://github.com/Learnosity/learnosity-sdk-php.git cd learnosity-sdk-php ``` @@ -133,7 +133,7 @@ If you prefer to run the application locally without Docker, follow these prereq 4. Start the built-in PHP development server: - ``` + ```bash make quickstart ``` From 22c27780388a776a6588e856bb8379182f20adb6 Mon Sep 17 00:00:00 2001 From: Anthony Murphy Date: Mon, 18 Nov 2024 11:06:29 +1100 Subject: [PATCH 09/13] [BUILD] ensure correct PHP Docker file is committed LRN-45518 --- docker/php/Dockerfile | 32 +++++++------------------------- 1 file changed, 7 insertions(+), 25 deletions(-) diff --git a/docker/php/Dockerfile b/docker/php/Dockerfile index 454e5ac..a0ed4da 100644 --- a/docker/php/Dockerfile +++ b/docker/php/Dockerfile @@ -2,19 +2,14 @@ ARG PHP_VERSION=8.3 ARG DEBIAN_VERSION=bookworm ARG COMPOSER_VERSION=2.7.6 -FROM composer:${COMPOSER_VERSION} as composer - FROM php:${PHP_VERSION}-fpm-${DEBIAN_VERSION} -COPY --from=composer /usr/bin/composer /usr/local/bin/composer - -# Install nginx and other dependencies +# Install necessary dependencies RUN apt-get update && apt-get install -y --no-install-recommends \ - git=1:2.* \ - libzip-dev=1.* \ - unzip=6.0* \ - zip=3.0* \ - nginx=1.22.* \ + git=1:2.* \ + libzip-dev=1.* \ + unzip=6.0* \ + zip=3.0* \ && docker-php-ext-install zip \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* @@ -22,21 +17,8 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ # Configure PHP-FPM to listen on TCP/IP RUN sed -i 's/listen = \/run\/php-fpm.sock/listen = 127.0.0.1:9000/g' /usr/local/etc/php-fpm.d/www.conf -# Configure nginx -COPY docker/nginx/default.conf /etc/nginx/conf.d/default.conf -RUN rm -f /etc/nginx/sites-enabled/default - WORKDIR /var/www/html -# Copy start script -COPY <<'EOF' /usr/local/bin/start.sh -#!/bin/sh -php-fpm -D -nginx -g 'daemon off;' -EOF - -RUN chmod +x /usr/local/bin/start.sh - -EXPOSE 8000 +EXPOSE 9000 -CMD ["/usr/local/bin/start.sh"] +CMD ["php-fpm"] From e7598bfaf6c6508708302c28a20ea15c144fc727 Mon Sep 17 00:00:00 2001 From: Anthony Murphy Date: Mon, 18 Nov 2024 11:09:40 +1100 Subject: [PATCH 10/13] [BUILD] remove old Dockerfile in favour of specific PHP & nginx Dockerfiles LRN-45518 --- Dockerfile | 15 --------------- 1 file changed, 15 deletions(-) delete mode 100644 Dockerfile diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 7045925..0000000 --- a/Dockerfile +++ /dev/null @@ -1,15 +0,0 @@ -ARG PHP_VERSION=8.3 -ARG DEBIAN_VERSION=bookworm -ARG COMPOSER_VERSION=2.7.6 - -FROM composer:${COMPOSER_VERSION} as composer - -FROM php:${PHP_VERSION}-cli-${DEBIAN_VERSION} - -COPY --from=composer /usr/bin/composer /usr/local/bin/composer - -RUN apt-get update && apt-get install -y --no-install-recommends \ - git=1:2.* libzip-dev=1.* unzip=6.0* zip=3.0* \ - && docker-php-ext-install zip \ - && apt-get clean \ - && rm -rf /var/lib/apt/lists/* From 6bb6c2485ff8937c45c8153ec252701a1d58e51a Mon Sep 17 00:00:00 2001 From: Anthony Murphy Date: Wed, 4 Dec 2024 10:56:43 +1100 Subject: [PATCH 11/13] [REFACTOR] Remove unused exports --- Makefile | 4 ---- 1 file changed, 4 deletions(-) diff --git a/Makefile b/Makefile index d3fa1e8..132f6dc 100644 --- a/Makefile +++ b/Makefile @@ -17,10 +17,6 @@ COMPOSER_VERSION-7.1 = 2.2 COMPOSER_VERSION-def = 2.7.6 COMPOSER_VERSION ?= $(or $(COMPOSER_VERSION-$(PHP_VERSION)),$(COMPOSER_VERSION-def)) -export PHP_VERSION -export DEBIAN_VERSION -export COMPOSER_VERSION - TARGETS = all build devbuild prodbuild \ quickstart check-quickstart install-vendor \ dist dist-test dist-zip release \ From 7079326e7b16647b4c9b64b809ea3f91f53de6fb Mon Sep 17 00:00:00 2001 From: Anthony Murphy Date: Wed, 4 Dec 2024 14:41:57 +1100 Subject: [PATCH 12/13] [BUILD] Update quickstart logic based on Davids comments --- Makefile | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/Makefile b/Makefile index 132f6dc..cff7ac9 100644 --- a/Makefile +++ b/Makefile @@ -49,15 +49,7 @@ COMPOSER_INSTALL_FLAGS = --no-interaction --optimize-autoloader --classmap-autho PHPCS= ./vendor/bin/phpcs PHPUNIT = ./vendor/bin/phpunit -### -# quickstart rules -### -quickstart: -ifneq (,$(DOCKER)) - $(MAKE) docker-quickstart -else - $(MAKE) local-quickstart -endif +quickstart: $(if $(DOCKER),docker-build) $(if $(DOCKER),docker,local)-quickstart docker-quickstart: VENDOR_FLAGS = --no-dev docker-quickstart: install-vendor From 1231a3e7e1f75c4d5d50a1ddb7776b1af8d288d9 Mon Sep 17 00:00:00 2001 From: Anthony Murphy Date: Wed, 4 Dec 2024 14:42:55 +1100 Subject: [PATCH 13/13] [BUILD] Remove duplicated unused target --- Makefile | 7 ------- 1 file changed, 7 deletions(-) diff --git a/Makefile b/Makefile index cff7ac9..437e0da 100644 --- a/Makefile +++ b/Makefile @@ -26,13 +26,6 @@ TARGETS = all build devbuild prodbuild \ .PHONY: $(TARGETS) .default: all -ifneq (,$(DOCKER)) -# Docker-based targets -docker-targets = quickstart -$(docker-targets): docker-build - $(DOCKER_COMPOSE) run --rm php make -e MAKEFLAGS="$(MAKEFLAGS)" $@ -endif - docker-build: install-vendor $(DOCKER_COMPOSE) build php nginx