Compare commits

...

15 Commits

Author SHA1 Message Date
f16e9fe72c [add] Parametrizing 2018-08-08 16:15:45 -06:00
d2b9163537 [add] Configuring the mysql port 2018-08-08 15:58:55 -06:00
403541580d Merge pull request #10 from PootisPenserHere/dockerizing
Dockerizing
2018-08-08 01:46:39 -06:00
663ea7cc3e [add] Testing the docker build in CI 2018-08-08 07:41:29 +00:00
f93b41f14e [add] Index protection 2018-08-08 07:37:27 +00:00
24f1ce1ed7 [add] Docker ignore for php 2018-08-08 07:32:54 +00:00
b25346e3d5 [add] Database initiated along with container 2018-08-08 07:14:22 +00:00
f2237d9209 [add] Connecting to mysql from pdo 2018-08-08 05:24:02 +00:00
7fc9ca8c75 [add] Mysql container 2018-08-07 19:25:20 -06:00
97fca1d7d3 [add] Docker compose 2018-08-07 17:33:21 -06:00
058e19a49a [add] Apache conf for the docker container 2018-08-07 17:32:32 -06:00
bffeb6e9f4 [add] Dockerfile 2018-08-07 17:31:02 -06:00
9a3e876afe Merge pull request #9 from PootisPenserHere/employeeDataByCode
[add] Emṕloyee data by code
2018-08-06 15:22:05 -06:00
dadea504d0 [add] Emṕloyee data by code 2018-08-06 15:17:31 -06:00
1390427ec0 Merge pull request #8 from PootisPenserHere/listAllEmployees
[add] List of all active employees
2018-08-06 03:51:09 -06:00
13 changed files with 147 additions and 6 deletions

View File

@@ -0,0 +1,5 @@
Dockerfile
README.md
buildspec.yml
CONTRIBUTING.md
docker-compose.yml

1
api-payroll/.htaccess Normal file
View File

@@ -0,0 +1 @@
Options -Indexes

43
api-payroll/Dockerfile Normal file
View File

@@ -0,0 +1,43 @@
FROM ubuntu:16.04
# Updating
RUN apt-get -y update && apt-get -y upgrade
# Installing php, apache and supplementary software
RUN apt-get -y install apache2 php7.0 libapache2-mod-php7.0 php7.0-cli php7.0-common php7.0-mbstring php7.0-gd php7.0-intl php7.0-xml php7.0-mysql php7.0-mcrypt php7.0-zip curl git unzip composer
# Enable apache mods
RUN a2enmod php7.0
RUN a2enmod rewrite
# Update the PHP.ini file, enable <? ?> tags and quieten logging
RUN sed -i "s/short_open_tag = Off/short_open_tag = On/" /etc/php/7.0/apache2/php.ini
RUN sed -i "s/error_reporting = .*$/error_reporting = E_ERROR | E_WARNING | E_PARSE/" /etc/php/7.0/apache2/php.ini
# Manually set up the apache environment variables
ENV APACHE_RUN_USER www-data
ENV APACHE_RUN_GROUP www-data
ENV APACHE_LOG_DIR /var/log/apache2
ENV APACHE_LOCK_DIR /var/lock/apache2
# Expose apache
EXPOSE 80
# Copy this repo into place.
ADD . /var/www/site
WORKDIR /var/www/site
# Testing permisions
RUN chmod 777 -R .
# Installing dependencies
RUN composer install
# Unit tests
RUN composer test
# Update the default apache site with the config we created.
ADD apache-config.conf /etc/apache2/sites-enabled/000-default.conf
# By default start up apache in the foreground, override with /bin/bash for interative
CMD /usr/sbin/apache2ctl -D FOREGROUND

View File

@@ -0,0 +1,15 @@
<VirtualHost *:80>
ServerAdmin me@mydomain.com
DocumentRoot /var/www/site
<Directory /var/www/site/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order deny,allow
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

View File

@@ -14,8 +14,9 @@ phases:
- echo Entered the build phase...
- echo Build started on `date`
- composer test
- sudo docker-compose up --build -d
post_build:
commands:
- echo Entered the post_build phase...
- sudo docker-compose down --rmi all -v
- echo Build completed on `date`

View File

@@ -269,6 +269,16 @@ class EmployeeApplication{
return $response;
}
/**
* @param $code string
* @return array
*/
function getEmployeeDataByCode($code){
$idEmployee = $this->getIdEmployeeTypeByCode($code);
return $this->proxyGetEmployeeDataById($idEmployee);
}
/**
* @param $idPerson integer
* @param $firstName binary

View File

@@ -24,6 +24,7 @@ $container['mysql'] = function ($c) {
// The database parameters
$host = $mysqlSettings['host'];
$port = $mysqlSettings['port'];
$database = $mysqlSettings['database'];
$user = $mysqlSettings['user'];
$password = $mysqlSettings['password'];
@@ -34,7 +35,7 @@ $container['mysql'] = function ($c) {
$databaseConnectionErrorMessage = $mysqlSettings['databaseConnectionErrorMessage'];
// Initiate the connection
$dsn = "mysql:host=$host;dbname=$database;charset=$charset";
$dsn = "mysql:host=$host;port=$port;dbname=$database;charset=$charset";
try {
$pdo = new PDO($dsn, $user, $password, $pdoConnectionOptions);
} catch (Exception $e) {
@@ -69,4 +70,4 @@ $container['employeeApplication'] = function ($c) {
$employeeApplication = new App\Application\EmployeeApplication($employeeSettings,
$c['mysql'], $c['cryptographyService'], $c['asserts']);
return $employeeApplication;
};
};

View File

@@ -79,10 +79,18 @@ $app->get('/api/employee/type/{code}', function (Request $request, Response $res
->write(json_encode($this->employeeApplication->getIdEmployeeTypeByCode($code)));
});
$app->get('/api/employee/{idEmployee}', function (Request $request, Response $response, array $args) {
$app->get('/api/employee/id/{idEmployee}', function (Request $request, Response $response, array $args) {
$idEmployee = $args['idEmployee'];
return $response->withStatus(200)
->withHeader('Content-Type', 'application/json')
->write(json_encode($this->employeeApplication->proxyGetEmployeeDataById($idEmployee)));
});
$app->get('/api/employee/code/{code}', function (Request $request, Response $response, array $args) {
$code = $args['code'];
return $response->withStatus(200)
->withHeader('Content-Type', 'application/json')
->write(json_encode($this->employeeApplication->getEmployeeDataByCode($code)));
});

View File

@@ -26,7 +26,8 @@ return [
// Datanase settings
'mysql' => [
'host' => 'localhost',
'host' => 'mysql',
'port' => '3307',
'database' => 'payroll',
'user' => 'root',
'password' => '12345678',
@@ -43,7 +44,7 @@ return [
// Employee settings
'employee' => [
'codeLength' => '5',
'codeLength' => '3',
],
],
];

1
database/.dockerignore Normal file
View File

@@ -0,0 +1 @@
Dockerfile

7
database/Dockerfile Normal file
View File

@@ -0,0 +1,7 @@
FROM mysql:5.7
# Starting scripts
ADD . /docker-entrypoint-initdb.d
# Config
ADD my.cnf /etc/mysql

20
database/my.cnf Normal file
View File

@@ -0,0 +1,20 @@
# Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
[mysqld]
port = 3307
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

28
docker-compose.yml Normal file
View File

@@ -0,0 +1,28 @@
version: '3'
services:
api:
container_name: payroll_api
build: api-payroll/
ports:
- "8085:80"
volumes:
- api-payroll:/var/www/site
depends_on:
- mysql
mysql:
container_name: payroll_mysql
restart: always
build: database
expose:
- "3307"
ports:
- "3307:3307"
volumes:
- my-datavolume:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: '12345678'
MYSQL_USER: 'sloth'
MYSQL_PASS: '12345678'
volumes:
api-payroll:
my-datavolume: