docker stuff

This commit is contained in:
Roman 2021-04-07 19:43:22 +02:00
parent 0f10e59e38
commit 6292f72032
11 changed files with 2048 additions and 5 deletions

0
core/Configuration/.gitignore vendored Executable file → Normal file

0
core/Configuration/.htaccess Executable file → Normal file

0
core/Configuration/Configuration.class.php Executable file → Normal file

0
core/Configuration/CreateDatabase.class.php Executable file → Normal file

@ -88,6 +88,10 @@ namespace Documents\Install {
$this->steps = array();
}
function isDocker(): bool {
return file_exists("/.dockerenv");
}
private function getParameter($name): ?string {
if (isset($_REQUEST[$name]) && is_string($_REQUEST[$name])) {
return trim($_REQUEST[$name]);
@ -542,6 +546,10 @@ namespace Documents\Install {
$attributes["max"] = $formItem["max"];
if (isset($formItem["step"]) && is_numeric($formItem["step"]))
$attributes["step"] = $formItem["step"];
} else {
if (isset($formItem["default"])) {
$attributes["value"] = $formItem["default"];
}
}
}
@ -579,6 +587,12 @@ namespace Documents\Install {
private function createProgessMainview(): string {
$isDocker = $this->isDocker();
$defaultHost = ($isDocker ? "db" : "");
$defaultUsername = ($isDocker ? "root" : "");
$defaultPassword = ($isDocker ? "webbasedb" : "");
$defaultDatabase = ($isDocker ? "webbase" : "");
$views = array(
self::CHECKING_REQUIREMENTS => array(
"title" => "Application Requirements",
@ -590,13 +604,13 @@ namespace Documents\Install {
array("title" => "Database Type", "name" => "type", "type" => "select", "required" => true, "items" => array(
"mysql" => "MySQL", "postgres" => "PostgreSQL"
)),
array("title" => "Username", "name" => "username", "type" => "text", "required" => true),
array("title" => "Password", "name" => "password", "type" => "password"),
array("title" => "Database", "name" => "database", "type" => "text", "required" => true),
array("title" => "Username", "name" => "username", "type" => "text", "required" => true, "default" => $defaultUsername),
array("title" => "Password", "name" => "password", "type" => "password", "default" => $defaultPassword),
array("title" => "Database", "name" => "database", "type" => "text", "required" => true, "default" => $defaultDatabase),
array("type" => "row", "items" => array(
array(
"title" => "Address", "name" => "host", "type" => "text", "required" => true,
"value" => "localhost", "row" => true
"value" => "localhost", "row" => true, "default" => $defaultHost
),
array(
"title" => "Port", "name" => "port", "type" => "number", "required" => true,

28
docker-compose.yml Normal file

@ -0,0 +1,28 @@
version: "3.9"
services:
web:
image: nginx:latest
ports:
- "80:80"
volumes:
- .:/application:rw
- ./docker/nginx/site.conf:/etc/nginx/conf.d/default.conf:ro
links:
- db
- php
db:
image: mariadb:latest
ports:
- '3306:3306'
environment:
- "MYSQL_ROOT_PASSWORD=webbasedb"
- "MYSQL_DATABASE=webbase"
php:
volumes:
- .:/application:rw
- ./docker/php/php.ini:/usr/local/etc/php/php.ini:ro
build:
context: './docker/php/'
links:
- db

1
docker/.htaccess Normal file

@ -0,0 +1 @@
DENY FROM ALL

46
docker/nginx/site.conf Normal file

@ -0,0 +1,46 @@
server {
index index.php index.html;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /application;
# rewrite api
rewrite ^/api(/.*)$ /index.php?api=$1;
# deny access to .gitignore / .htaccess
location ~ /\. {
rewrite ^(.*)$ /index.php?site=$1;
}
# deny access to docker-compose.yml
location /docker-compose.yml {
rewrite ^(.*)$ /index.php?site=$1;
}
# deny access to specific directories
location ~ ^/(files/uploaded|adminPanel|fileControlPanel|docker|core)/.*$ {
rewrite ^(.*)$ /index.php?site=$1;
}
# try to find the specified file
location / {
try_files $uri $uri @redirectToIndex;
}
# redirect to index.php
location @redirectToIndex {
rewrite ^(.*)$ /index.php?site=$1;
}
# serve .php files
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass php:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}

4
docker/php/Dockerfile Normal file

@ -0,0 +1,4 @@
FROM php:7-fpm
WORKDIR "/application"
RUN docker-php-ext-install mysqli

1950
docker/php/php.ini Normal file

File diff suppressed because it is too large Load Diff

@ -18,7 +18,7 @@ use Elements\Document;
if (!is_readable(getClassPath(Configuration::class))) {
header("Content-Type: application/json");
die(json_encode(array( "success" => false, "msg" => "Configuration directory is not readable, check permissions before proceeding." )));
die(json_encode(array( "success" => false, "msg" => "Configuration class is not readable, check permissions before proceeding." )));
}
$config = new Configuration();