From 555533c5f3d28ec059b20a4b6ca0496dfc2b2207 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Lopez?= Date: Thu, 27 Dec 2018 21:41:43 -0500 Subject: [PATCH] add php-fpm build --- .gitignore | 4 +- nginx/build.py | 12 ++-- .../Dockerfile => Dockerfile.template} | 6 +- php-fpm/api/Dockerfile | 18 ------ php-fpm/build.py | 59 +++++++++++++++++++ 5 files changed, 71 insertions(+), 28 deletions(-) rename php-fpm/{website/Dockerfile => Dockerfile.template} (61%) delete mode 100644 php-fpm/api/Dockerfile create mode 100644 php-fpm/build.py diff --git a/.gitignore b/.gitignore index e876d6b..34204c1 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,6 @@ .idea venv *.pem -/**/Dockerfile +nginx/Dockerfile +php-fpm/Dockerfile +laravel-artisan/Dockerfile diff --git a/nginx/build.py b/nginx/build.py index 12a788e..0ab54b9 100644 --- a/nginx/build.py +++ b/nginx/build.py @@ -7,6 +7,11 @@ path = os.path.dirname(os.path.realpath(__file__)) +class Directory(Enum): + API = 'exosuite-users-api' + WEBSITE = 'exosuite-website' + + class Token(Enum): CONF = ':conf' DIR = ':dir' @@ -31,11 +36,6 @@ class Domain(Enum): WEBSITE = 'exosuite.local' -class Directory(Enum): - API = 'exosuite-users-api' - WEBSITE = 'exosuite-website' - - def generateCertificates(domain: Domain): os.system("openssl req -subj '/CN=" + domain.value + "' -x509 -newkey rsa:4096 -nodes -keyout key.pem -out cert.pem -days 365") @@ -44,7 +44,7 @@ def generateCertificates(domain: Domain): def generateDockerfile(datas): dockerFileContent = open('./Dockerfile.template').read() - dockerFileContent = dockerFileContent.replace(Token.CONF.value, datas[Token.CONF])\ + dockerFileContent = dockerFileContent.replace(Token.CONF.value, datas[Token.CONF]) \ .replace(Token.DIR.value, datas[Token.DIR].value) f = open("Dockerfile", "w") diff --git a/php-fpm/website/Dockerfile b/php-fpm/Dockerfile.template similarity index 61% rename from php-fpm/website/Dockerfile rename to php-fpm/Dockerfile.template index f4bc9b4..1a49f8e 100644 --- a/php-fpm/website/Dockerfile +++ b/php-fpm/Dockerfile.template @@ -10,9 +10,9 @@ RUN pecl install -o -f redis \ RUN docker-php-ext-install -j$(nproc) pdo_pgsql pcntl posix bcmath opcache -COPY exosuite-website /var/www/exosuite-website +COPY :dir /var/www/:dir -RUN find /var/www/exosuite-website -type d -exec chown www-data:www-data {} \; -RUN find /var/www/exosuite-website -type f -exec chown www-data:www-data {} \; +RUN find /var/www/:dir -type d -exec chown www-data:www-data {} \; +RUN find /var/www/:dir -type f -exec chown www-data:www-data {} \; RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini" \ No newline at end of file diff --git a/php-fpm/api/Dockerfile b/php-fpm/api/Dockerfile deleted file mode 100644 index 2276e3e..0000000 --- a/php-fpm/api/Dockerfile +++ /dev/null @@ -1,18 +0,0 @@ -FROM php:7.3-fpm-alpine - -RUN set -ex \ - && apk --no-cache add \ - postgresql-dev autoconf g++ make - -RUN pecl install -o -f redis \ -&& rm -rf /tmp/pear \ -&& docker-php-ext-enable redis - -RUN docker-php-ext-install -j$(nproc) pdo_pgsql pcntl posix bcmath opcache - -COPY exosuite-users-api /var/www/exosuite-users-api - -RUN find /var/www/exosuite-users-api -type d -exec chown www-data:www-data {} \; -RUN find /var/www/exosuite-users-api -type f -exec chown www-data:www-data {} \; - -RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini" \ No newline at end of file diff --git a/php-fpm/build.py b/php-fpm/build.py new file mode 100644 index 0000000..858de95 --- /dev/null +++ b/php-fpm/build.py @@ -0,0 +1,59 @@ +#!/usr/bin/env python3 + +import optparse +import os +from enum import Enum + +path = os.path.dirname(os.path.realpath(__file__)) + + +class Directory(Enum): + API = 'exosuite-users-api' + WEBSITE = 'exosuite-website' + + +class Token(Enum): + DIR = ':dir' + + @staticmethod + def api(): + data = dict() + data[Token.DIR] = Directory.API.value + return data + + @staticmethod + def website(): + data = dict() + data[Token.DIR] = Directory.WEBSITE.value + return data + + +def generateDockerfile(datas): + dockerFileContent = open('./Dockerfile.template').read() + + dockerFileContent = dockerFileContent.replace(Token.DIR.value, datas[Token.DIR]) + + f = open("Dockerfile", "w") + f.write(dockerFileContent) + f.close() + + +parser = optparse.OptionParser() +parser.add_option("--website", action="store_true", dest="website") +parser.add_option("--api", action='store_true', dest="api") +parser.add_option("--clean", action='store_true', dest="clean") +(opts, args) = parser.parse_args() + +os.chdir(path) + +if opts.api: + generateDockerfile(Token.api()) + print("Dockerfile generated for API!") +elif opts.website: + generateDockerfile(Token.website()) + print("Dockerfile generated for WEBSITE!") +elif opts.clean: + os.system("rm -f Dockerfile") + print("Directory cleaned!") +else: + parser.print_help()