From fcc84ac09ca5bc099086e12ba3b92b8a60e5a21b Mon Sep 17 00:00:00 2001 From: Aldarien Date: Fri, 25 Mar 2022 10:10:43 -0300 Subject: [PATCH] Console application --- console/Dockerfile | 12 ++++++++ console/bin/console | 7 +++++ console/common/Define/Application.php | 21 +++++++++++++ console/composer.json | 25 ++++++++++++++++ console/php.ini | 4 +++ console/setup/app.php | 39 ++++++++++++++++++++++++ console/setup/composer.php | 6 ++++ console/setup/settings/02_api.php | 5 ++++ console/setup/setups/02_client.php | 13 ++++++++ docker-compose.yml | 43 +++++++++++++++++++-------- 10 files changed, 163 insertions(+), 12 deletions(-) create mode 100644 console/Dockerfile create mode 100644 console/bin/console create mode 100644 console/common/Define/Application.php create mode 100644 console/composer.json create mode 100644 console/php.ini create mode 100644 console/setup/app.php create mode 100644 console/setup/composer.php create mode 100644 console/setup/settings/02_api.php create mode 100644 console/setup/setups/02_client.php diff --git a/console/Dockerfile b/console/Dockerfile new file mode 100644 index 0000000..181486b --- /dev/null +++ b/console/Dockerfile @@ -0,0 +1,12 @@ +FROM php:8-cli + +RUN apt-get update -y && apt-get install -y cron git libzip-dev zip + +RUN docker-php-ext-install zip + +COPY --from=composer /usr/bin/composer /usr/bin/composer + +WORKDIR /app + +CMD ["cron", "-f", "-l", "2"] +ENTRYPOINT ["cron", "-f", "-l", "2"] diff --git a/console/bin/console b/console/bin/console new file mode 100644 index 0000000..0606ece --- /dev/null +++ b/console/bin/console @@ -0,0 +1,7 @@ +run(); diff --git a/console/common/Define/Application.php b/console/common/Define/Application.php new file mode 100644 index 0000000..9f69131 --- /dev/null +++ b/console/common/Define/Application.php @@ -0,0 +1,21 @@ +setContainer($container); + } + protected $container; + public function setContainer(Container $container) { + $this->container = $container; + return $this; + } + public function getContainer() { + return $this->container; + } +} diff --git a/console/composer.json b/console/composer.json new file mode 100644 index 0000000..928333f --- /dev/null +++ b/console/composer.json @@ -0,0 +1,25 @@ +{ + "name": "provm/contabilidad-console", + "type": "project", + "require": { + "symfony/console": "^6.0", + "php-di/php-di": "^6.3", + "nesbot/carbon": "^2.57", + "guzzlehttp/guzzle": "^7.4" + }, + "require-dev": { + "phpunit/phpunit": "^9.5", + "kint-php/kint": "^4.1" + }, + "authors": [ + { + "name": "Aldarien", + "email": "aldarien85@gmail.com" + } + ], + "autoload": { + "psr-4": { + "Contabilidad\\Common\\": "common/" + } + } +} diff --git a/console/php.ini b/console/php.ini new file mode 100644 index 0000000..2f3a539 --- /dev/null +++ b/console/php.ini @@ -0,0 +1,4 @@ +[PHP] +display_errors = E_ALL +log_errors = true +error_log = /var/log/php/error.log diff --git a/console/setup/app.php b/console/setup/app.php new file mode 100644 index 0000000..e64445f --- /dev/null +++ b/console/setup/app.php @@ -0,0 +1,39 @@ +isDir()) { + continue; + } + $builder->addDefinitions($file->getRealPath()); + } +} +$container = $builder->build(); +$app = new Application($container); + +$folder = implode(DIRECTORY_SEPARATOR, [__DIR__, 'commands']); +if (file_exists($folder)) { + $files = new DirectoryIterator($folder); + foreach ($files as $file) { + if ($file->isDir() or $file->getExtension() != 'php') { + continue; + } + include_once $file->getRealPath(); + } +} + +return $app; diff --git a/console/setup/composer.php b/console/setup/composer.php new file mode 100644 index 0000000..c8fb135 --- /dev/null +++ b/console/setup/composer.php @@ -0,0 +1,6 @@ + $_ENV['API_URL'], + 'api_key' => $_ENV['API_KEY'] +]; diff --git a/console/setup/setups/02_client.php b/console/setup/setups/02_client.php new file mode 100644 index 0000000..f924a65 --- /dev/null +++ b/console/setup/setups/02_client.php @@ -0,0 +1,13 @@ + function(Container $container) { + return new \GuzzleHttp\Client([ + 'base_uri' => $container->get('api_url'), + 'headers' => [ + 'Authorization' => "Bearer {$container->get('api_key')}" + ] + ]); + } +]; diff --git a/docker-compose.yml b/docker-compose.yml index e59f2b4..7c33a42 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,15 +1,18 @@ version: '3' +x-restart: &restart + restart: unless-stopped + services: api: profiles: - api - restart: unless-stopped + <<: *restart image: php build: context: api - env_file: - - .env + env_file: + - .db.env - .api.env - .python.env volumes: @@ -19,26 +22,26 @@ services: api-proxy: profiles: - api - restart: unless-stopped + <<: *restart image: nginx ports: - "9001:80" volumes: - ./api/nginx.conf:/etc/nginx/conf.d/default.conf - - ./logs/api/:/var/log/nginx/ + - ./logs/api/proxy/:/var/log/nginx/ - ./api/:/app/ db: profiles: - api - restart: unless-stopped + <<: *restart image: mariadb - env_file: .env + env_file: .db.env volumes: - contabilidad_data:/var/lib/mysql adminer: profiles: - api - restart: unless-stopped + <<: *restart image: adminer ports: - "9002:8080" @@ -46,7 +49,7 @@ services: ui: profiles: - ui - restart: unless-stopped + <<: *restart image: php-ui env_file: - .api.env @@ -60,19 +63,19 @@ services: ui-proxy: profiles: - ui - restart: unless-stopped + <<: *restart image: nginx ports: - "9000:80" volumes: - ./ui/nginx.conf:/etc/nginx/conf.d/default.conf - - ./logs/ui/:/var/log/nginx/ + - ./logs/ui/proxy/:/var/log/nginx/ - ./ui/:/app/ python: profiles: - python - restart: unless-stopped + <<: *restart build: context: ./python env_file: @@ -85,5 +88,21 @@ services: - ./api/public/uploads/pdfs/:/app/data/ - ./logs/python/:/var/log/python/ + console: + profiles: + - console + <<: *restart + build: + context: ./console + env_file: + - .api.env + - .console.env + - .db.env + volumes: + - ./console/:/app/ + - ./console/php.ini:/usr/local/etc/php/conf.d/php.ini + - ./logs/console/:/var/log/php/ + - ./console/crontab:/var/spool/cron/crontabs/root + volumes: contabilidad_data: