From 068158ede94f0fc88905aa5e5fc478c211de3af9 Mon Sep 17 00:00:00 2001 From: dario-cfpt Date: Wed, 2 Oct 2024 10:24:59 +0200 Subject: [PATCH] server: add Dockerfile and environment variables The Dockerfile (and docker-compose) simplify the server's deployment. The environment variables avoid secrets in the code. --- Dockerfile | 8 ++++++++ docker-compose.yml | 40 ++++++++++++++++++++++++++++++++++++++++ server/database.php | 12 +++--------- 3 files changed, 51 insertions(+), 9 deletions(-) create mode 100644 Dockerfile create mode 100644 docker-compose.yml diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..c74f103 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,8 @@ +FROM docker.io/library/php:8.3-apache + +COPY server/*.php /var/www/html +COPY server/.htaccess /var/www/html + +RUN a2enmod rewrite && docker-php-ext-install pdo pdo_mysql + +EXPOSE 80 diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..e943240 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,40 @@ +services: + db: + image: docker.io/library/mariadb:11.5.2 + container_name: ${MYSQL_HOST} + restart: always + ports: + - 127.0.0.1:${MYSQL_PORT}:3306 + environment: + MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} + MYSQL_DATABASE: ${MYSQL_DATABASE} + MYSQL_USER: ${MYSQL_USER} + MYSQL_PASSWORD: ${MYSQL_PASSWORD} + + phpmyadmin: + image: docker.io/library/phpmyadmin + container_name: fecharts_phpmyadmin + links: + - ${MYSQL_HOST} + restart: unless-stopped + ports: + - 127.0.0.1:${PHPMYADMIN_PORT}:80 + environment: + - PMA_ARBITRARY=1 + - PMA_HOST=${MYSQL_HOST} + - PMA_PORT=${MYSQL_PORT} + + api: + image: odari/fecharts_api:1.0.0 + container_name: fecharts_api + links: + - ${MYSQL_HOST} + restart: always + ports: + - 127.0.0.1:${FECHARTS_API_PORT}:80 + environment: + - MYSQL_HOST=${MYSQL_HOST} + - MYSQL_USER=${MYSQL_USER} + - MYSQL_PASSWORD=${MYSQL_PASSWORD} + - MYSQL_DATABASE=${MYSQL_DATABASE} + - MYSQL_PORT=${MYSQL_PORT} diff --git a/server/database.php b/server/database.php index 53b1630..031722b 100644 --- a/server/database.php +++ b/server/database.php @@ -7,20 +7,14 @@ class database private static $instance = null; private $conn; - private $host = 'localhost'; - private $user = 'root'; - private $pass = ''; - private $name = 'fe_charts'; - private $port = ''; - // The db connection is established in the private constructor. private function __construct() { try { $this->conn = new PDO( - "mysql:host={$this->host};dbname={$this->name};port={$this->port}", - $this->user, - $this->pass + 'mysql:host=' . getenv('MYSQL_HOST') . ';dbname=' . getenv('MYSQL_DATABASE') . ';port=' . getenv('MYSQL_PORT'), + getenv('MYSQL_USER'), + getenv('MYSQL_PASSWORD') ); } catch (PDOException $e) { die('Connection failed: ' . $e->getMessage());