From aa3aa31b903ede7651ddead23b4816e088a5a394 Mon Sep 17 00:00:00 2001 From: Sonia Zorba Date: Wed, 21 Aug 2019 17:18:46 +0200 Subject: [PATCH] Started Dockerization --- Dockerfile | 52 ++++++++++++++++++++++++ classes/datalayer/mysql/BaseMySQLDAO.php | 2 +- classes/datalayer/mysql/MySQLUserDAO.php | 2 +- docker/db/1-user.sql | 5 +++ docker/db/Dockerfile | 9 ++++ docker/db/event.cnf | 2 + docker/rap.conf | 3 ++ 7 files changed, 73 insertions(+), 2 deletions(-) create mode 100644 Dockerfile create mode 100644 docker/db/1-user.sql create mode 100644 docker/db/Dockerfile create mode 100644 docker/db/event.cnf create mode 100644 docker/rap.conf diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..6de6318 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,52 @@ +FROM ubuntu:18.10 + +# To fix "configuring tzdata" interactive input during apt install +ENV DEBIAN_FRONTEND=noninteractive + +RUN apt-get update && \ + apt-get install -yq --no-install-recommends \ + apache2 \ + libapache2-mod-php7.2 \ + php7.2-xml \ + php7.2-mbstring \ + php-mysql \ + php-curl \ + libapache2-mod-shib2 \ + make \ + wget \ + ca-certificates \ + vim + +# Copying Shibboleth SP configuration +COPY docker/shibboleth2.xml /etc/shibboleth/ + +# Installing Embedded Discovery Service +WORKDIR /usr/local/src + +RUN wget https://shibboleth.net/downloads/embedded-discovery-service/1.2.1/shibboleth-embedded-ds-1.2.1.tar.gz -O shibboleth-eds.tar.gz +RUN tar xzf shibboleth-eds.tar.gz + +WORKDIR shibboleth-embedded-ds-1.2.1 +RUN make install + +RUN mv /etc/shibboleth-ds/shibboleth-ds.conf /etc/apache2/conf-available/shibboleth-ds.conf +RUN sed -i 's/Allow from All/Require all granted/g' /etc/apache2/conf-available/shibboleth-ds.conf +RUN a2enconf shibboleth-ds.conf + +# Adding RAP Apache configuration +COPY docker/rap.conf /etc/apache2/conf-available/ +RUN a2enconf rap.conf + +# Enable mod_rewrite (for Flight framework) +RUN a2enmod rewrite + +# Copying RAP php files +WORKDIR /var/www/html +COPY . rap-ia2 + +WORKDIR /var/www/html/rap-ia2 +RUN mkdir -p logs +RUN chown -R www-data logs + +# Starting Apache +CMD apachectl -D FOREGROUND diff --git a/classes/datalayer/mysql/BaseMySQLDAO.php b/classes/datalayer/mysql/BaseMySQLDAO.php index 3741c95..7798f38 100644 --- a/classes/datalayer/mysql/BaseMySQLDAO.php +++ b/classes/datalayer/mysql/BaseMySQLDAO.php @@ -17,7 +17,7 @@ abstract class BaseMySQLDAO { */ public function getDBHandler(): PDO { $config = $this->locator->config->databaseConfig; - $connectionString = "mysql:host=" . $config->hostname . ";dbname=" . $config->dbname; + $connectionString = "mysql:host=" . $config->hostname . ";port=" . $config->port . ";dbname=" . $config->dbname; $dbh = new PDO($connectionString, $config->username, $config->password); // For transaction errors (see https://stackoverflow.com/a/9659366/771431) $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); diff --git a/classes/datalayer/mysql/MySQLUserDAO.php b/classes/datalayer/mysql/MySQLUserDAO.php index 3b9768e..cc1adaa 100644 --- a/classes/datalayer/mysql/MySQLUserDAO.php +++ b/classes/datalayer/mysql/MySQLUserDAO.php @@ -234,7 +234,7 @@ class MySQLUserDAO extends BaseMySQLDAO implements UserDAO { array_push($user->identities, $identity); } - + $users = []; foreach ($userMap as $userId => $user) { array_push($users, $user); diff --git a/docker/db/1-user.sql b/docker/db/1-user.sql new file mode 100644 index 0000000..4e6eaff --- /dev/null +++ b/docker/db/1-user.sql @@ -0,0 +1,5 @@ +CREATE DATABASE rap; +CREATE USER rap@'%' IDENTIFIED BY 'rap123'; +GRANT ALL PRIVILEGES ON rap.* TO rap@'%'; + +USE rap; diff --git a/docker/db/Dockerfile b/docker/db/Dockerfile new file mode 100644 index 0000000..6fe9ed1 --- /dev/null +++ b/docker/db/Dockerfile @@ -0,0 +1,9 @@ +FROM mariadb:10.4 + +ENV MYSQL_ROOT_PASSWORD=root + +ADD docker/db/event.cnf /etc/mysql/conf.d/ +ADD docker/db/1-user.sql /docker-entrypoint-initdb.d/ +ADD sql/setup-database.sql /docker-entrypoint-initdb.d/ + +RUN sed -i.old '1s;^;USE rap\;\n;' /docker-entrypoint-initdb.d/setup-database.sql diff --git a/docker/db/event.cnf b/docker/db/event.cnf new file mode 100644 index 0000000..49fd848 --- /dev/null +++ b/docker/db/event.cnf @@ -0,0 +1,2 @@ +[mysqld] +event_scheduler=1 diff --git a/docker/rap.conf b/docker/rap.conf new file mode 100644 index 0000000..dc0c73a --- /dev/null +++ b/docker/rap.conf @@ -0,0 +1,3 @@ + + AllowOverride All + -- GitLab