server: add Dockerfile and environment variables

The Dockerfile (and docker-compose) simplify the server's deployment.
The environment variables avoid secrets in the code.
This commit is contained in:
dario-cfpt
2024-10-02 10:24:59 +02:00
parent 318a2a0b17
commit 068158ede9
3 changed files with 51 additions and 9 deletions

8
Dockerfile Normal file
View File

@ -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

40
docker-compose.yml Normal file
View File

@ -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}

View File

@ -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());