=7.4",
+ "ext-json": "*",
+ "ext-sockets": "*",
+ "vmeleshkin/validators": "dev-main"
+ },
+ "autoload": {
+ "psr-4": {
+ "App\\": "app_src"
+ }
+ },
+ "minimum-stability": "dev"
+}
diff --git a/code/composer.lock b/code/composer.lock
new file mode 100644
index 00000000..d97180ff
--- /dev/null
+++ b/code/composer.lock
@@ -0,0 +1,62 @@
+{
+ "_readme": [
+ "This file locks the dependencies of your project to a known state",
+ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
+ "This file is @generated automatically"
+ ],
+ "content-hash": "65b49321a2ff80a0f8efcff8a70a1e1d",
+ "packages": [
+ {
+ "name": "vmeleshkin/validators",
+ "version": "dev-main",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/JastaFly/Email-Validator.git",
+ "reference": "01e3fa3a6bf850263ac690281c0109a6366240b4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/JastaFly/Email-Validator/zipball/01e3fa3a6bf850263ac690281c0109a6366240b4",
+ "reference": "01e3fa3a6bf850263ac690281c0109a6366240b4",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "default-branch": true,
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "VMeleshkin\\Validators\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "authors": [
+ {
+ "name": "Vlad Meleshkin (JastaFly)"
+ }
+ ],
+ "description": "Set different validators",
+ "support": {
+ "issues": "https://github.com/JastaFly/Email-Validator/issues",
+ "source": "https://github.com/JastaFly/Email-Validator/tree/main"
+ },
+ "time": "2022-05-07T20:36:36+00:00"
+ }
+ ],
+ "packages-dev": [],
+ "aliases": [],
+ "minimum-stability": "dev",
+ "stability-flags": {
+ "vmeleshkin/validators": 20
+ },
+ "prefer-stable": false,
+ "prefer-lowest": false,
+ "platform": {
+ "php": ">=7.4",
+ "ext-json": "*",
+ "ext-sockets": "*"
+ },
+ "platform-dev": [],
+ "plugin-api-version": "2.3.0"
+}
diff --git a/code/composer.phar b/code/composer.phar
new file mode 100644
index 00000000..4ebcd39a
Binary files /dev/null and b/code/composer.phar differ
diff --git a/code/css/style.css b/code/css/style.css
new file mode 100644
index 00000000..0d7e2389
--- /dev/null
+++ b/code/css/style.css
@@ -0,0 +1,54 @@
+@font-face {
+ font-family: 'Exo 2';
+ src: url(../fonts/Exo2-Regular.ttf);
+}
+
+body {
+ background-color: #2B2B2B;
+ display: flex;
+ justify-content: center;
+}
+
+h1 {
+ color: #57d9d9;
+ font-family: 'Exo 2';
+}
+
+label {
+ display: block;
+ font-family: 'Exo 2';
+ color: white;
+}
+
+input {
+ display: block;
+ font-family: 'Exo 2';
+ border-radius: 10px;
+ padding: 10px;
+ margin: 0 auto;
+ transition: 0.5s;
+ border: 1px #57d9d9 solid;
+ margin-bottom: 10px;
+ width: 40%;
+}
+
+input[type=submit] {
+ display: block;
+ font-family: 'Exo 2';
+ background-color: #57D9D9;
+ border-radius: 10px;
+ padding-top: 5px;
+ padding-bottom: 7px;
+ padding-left: 10px;
+ padding-right: 10px;
+ color: white;
+ cursor: pointer;
+ margin: 0 auto;
+ transition: 0.5s;
+ border: none;
+ width: fit-content;
+}
+
+input[type=submit]:hover {
+ background-color: #50E691;
+}
\ No newline at end of file
diff --git a/code/fonts/Exo2-Regular.ttf b/code/fonts/Exo2-Regular.ttf
new file mode 100644
index 00000000..12fcc70b
Binary files /dev/null and b/code/fonts/Exo2-Regular.ttf differ
diff --git a/code/index.php b/code/index.php
new file mode 100644
index 00000000..3aba25e7
--- /dev/null
+++ b/code/index.php
@@ -0,0 +1,16 @@
+
+
+
+ Домашняя работа 6 - Командная разработка
+
+
+
+
+
Домашняя работа 6 - Командная разработка
+
+
+
+
diff --git a/docker-compose.yml b/docker-compose.yml
new file mode 100644
index 00000000..c8bea795
--- /dev/null
+++ b/docker-compose.yml
@@ -0,0 +1,90 @@
+version: '3'
+
+services:
+ balancer:
+ build:
+ context: ./balancer
+ dockerfile: Dockerfile
+ container_name: balancer
+ image: localapp/balancer
+ ports:
+ - "80:80"
+ - "443:443"
+ depends_on:
+ - webserver1
+ - webserver2
+ networks:
+ - app-network
+
+ webserver1:
+ build:
+ context: ./webserver
+ dockerfile: Dockerfile
+ container_name: webserver1
+ image: localapp/webserver
+ ports:
+ - "8081:80"
+ volumes:
+ - ./code:/var/www/my-application.local
+ networks:
+ - app-network
+
+ webserver2:
+ build:
+ context: ./webserver
+ dockerfile: Dockerfile
+ container_name: webserver2
+ image: localapp/webserver
+ ports:
+ - "8082:80"
+ volumes:
+ - ./code:/var/www/my-application.local
+ networks:
+ - app-network
+
+ php1:
+ build:
+ context: ./php-fpm
+ dockerfile: Dockerfile
+ image: localapp/php
+ container_name: php1
+ volumes:
+ - ./code:/var/www/my-application.local
+ networks:
+ - app-network
+
+ php2:
+ build:
+ context: ./php-fpm
+ dockerfile: Dockerfile
+ image: localapp/php
+ container_name: php2
+ volumes:
+ - ./code:/var/www/my-application.local
+ networks:
+ - app-network
+
+ db:
+ image: mysql:5.7.22
+ container_name: db
+ ports:
+ - "3306:3306"
+ environment:
+ MYSQL_DATABASE: ${MYSQL_DATABASE}
+ MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
+ volumes:
+ - ./dbdata:/var/lib/mysql
+ networks:
+ - app-network
+
+ memcached:
+ image: memcached
+ container_name: memcached
+ ports:
+ - 11211:11211
+ networks:
+ - app-network
+
+networks:
+ app-network:
+ driver: bridge
diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile
new file mode 100644
index 00000000..67addd13
--- /dev/null
+++ b/php-fpm/Dockerfile
@@ -0,0 +1,30 @@
+FROM php:7.4-fpm
+
+RUN apt-get update && apt-get install -y \
+ curl \
+ wget \
+ git \
+ libfreetype6-dev \
+ libjpeg62-turbo-dev \
+ libpng-dev \
+ libonig-dev \
+ libzip-dev \
+ libmcrypt-dev \
+ libmemcached-dev\
+ libmemcached-tools\
+ && pecl install memcached \
+ && docker-php-ext-enable memcached \
+ && pecl install mcrypt-1.0.3 \
+ && docker-php-ext-enable mcrypt \
+ && docker-php-ext-install -j$(nproc) iconv mbstring mysqli pdo_mysql zip \
+ && docker-php-ext-configure gd --with-freetype --with-jpeg \
+ && docker-php-ext-install -j$(nproc) gd \
+ && curl -sS https://getcomposer.org/installer \
+ | php -- --install-dir=/usr/local/bin --filename=composer
+
+ADD php.ini /usr/local/etc/php/conf.d/40-custom.ini
+
+WORKDIR /var/www
+VOLUME /var/www
+
+CMD ["php-fpm"]
diff --git a/php-fpm/php.ini b/php-fpm/php.ini
new file mode 100644
index 00000000..a58749e0
--- /dev/null
+++ b/php-fpm/php.ini
@@ -0,0 +1,3 @@
+extension=memcached.so
+session.save_handler = memcache
+session.save_path = "tcp://memcache:11211"
diff --git a/webserver/Dockerfile b/webserver/Dockerfile
new file mode 100644
index 00000000..69acd1d8
--- /dev/null
+++ b/webserver/Dockerfile
@@ -0,0 +1,11 @@
+FROM ubuntu:latest
+
+RUN apt-get update && apt-get install -y nginx
+
+COPY ./hosts/my-application.local.conf /etc/nginx/sites-enabled/my-application.local.conf
+
+WORKDIR /var/www/my-application.local
+VOLUME /var/www/my-application.local
+EXPOSE 80
+
+CMD [ "nginx", "-g", "daemon off;"]
diff --git a/webserver/hosts/my-application.local.conf b/webserver/hosts/my-application.local.conf
new file mode 100644
index 00000000..3f7258ff
--- /dev/null
+++ b/webserver/hosts/my-application.local.conf
@@ -0,0 +1,32 @@
+upstream php-fpm {
+ server php1:9000;
+ server php2:9000;
+}
+
+server {
+ listen 80;
+ index index.php index.html index.htm;
+ server_name my-application.local;
+ root /var/www/my-application.local;
+ error_log /var/log/nginx/error.log;
+ access_log /var/log/nginx/access.log;
+
+ location ~* .(jpg|jpeg|gif|css|png|js|html)$ {
+ access_log off;
+ expires max;
+ }
+
+ location / {
+ try_files $uri $uri/ /index.php?$query_string;
+ }
+
+ location ~* .php$ {
+ try_files $uri = 404;
+ fastcgi_split_path_info (.+?\.php)(/.*)$;
+ fastcgi_pass php-fpm;
+ fastcgi_index index.php;
+ include fastcgi_params;
+ fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
+ fastcgi_param PATH_INFO $fastcgi_path_info;
+ }
+}