From 0fd7e2bce9d2d394cc3828fcae75d18269b15ae0 Mon Sep 17 00:00:00 2001
From: DarkNoon <13015521+darknoon29@users.noreply.github.com>
Date: Fri, 16 Aug 2024 00:48:38 +0200
Subject: [PATCH] Move to docker-alpine
---
.docker/Dockerfile | 52 ---------------
.docker/Dockerfile.nginx | 27 ++++++++
.docker/Dockerfile.ogspy | 56 ++++++++++++++++
.docker/README.md | 22 -------
.docker/apache_default | 35 ----------
.docker/configure.sh | 32 ---------
.docker/create_mysql_admin_user.sh | 38 -----------
.docker/db/1-DBSetup.sql | 8 +++
.../2-ogspy_docker.sql} | 2 +-
.docker/default.conf | 22 +++++++
.docker/docker-compose.yml | 65 +++++++++++++++++++
.docker/my.cnf | 2 -
.docker/mysql-setup.sh | 4 --
.docker/{ => parameters}/id.php | 2 +-
.docker/{ => parameters}/key.php | 0
.docker/parameters/salt | 1 +
.docker/run.sh | 17 -----
.docker/start-apache2.sh | 3 -
.docker/start-mysqld.sh | 2 -
.docker/supervisord-apache2.conf | 5 --
.docker/supervisord-mysqld.conf | 5 --
21 files changed, 181 insertions(+), 219 deletions(-)
delete mode 100644 .docker/Dockerfile
create mode 100644 .docker/Dockerfile.nginx
create mode 100644 .docker/Dockerfile.ogspy
delete mode 100644 .docker/README.md
delete mode 100644 .docker/apache_default
delete mode 100644 .docker/configure.sh
delete mode 100644 .docker/create_mysql_admin_user.sh
create mode 100644 .docker/db/1-DBSetup.sql
rename .docker/{ogspy_docker.sql => db/2-ogspy_docker.sql} (99%)
create mode 100644 .docker/default.conf
create mode 100644 .docker/docker-compose.yml
delete mode 100644 .docker/my.cnf
delete mode 100644 .docker/mysql-setup.sh
rename .docker/{ => parameters}/id.php (95%)
rename .docker/{ => parameters}/key.php (100%)
create mode 100644 .docker/parameters/salt
delete mode 100644 .docker/run.sh
delete mode 100644 .docker/start-apache2.sh
delete mode 100644 .docker/start-mysqld.sh
delete mode 100644 .docker/supervisord-apache2.conf
delete mode 100644 .docker/supervisord-mysqld.conf
diff --git a/.docker/Dockerfile b/.docker/Dockerfile
deleted file mode 100644
index 3989742c..00000000
--- a/.docker/Dockerfile
+++ /dev/null
@@ -1,52 +0,0 @@
-FROM ubuntu:latest
-
-LABEL VERSION ="0.3"
-LABEL DESCRIPTION="APACHE PHP OGSPY"
-LABEL MAINTENER="darknoon@darkcity.fr"
-
-# Install packages
-ENV DEBIAN_FRONTEND noninteractive
-RUN apt-get update --no-install-recommends && \
-apt-get -y install \
-supervisor \
-git \
-apache2 \
-libapache2-mod-php \
-mariadb-server \
-php-mysql \
-php-xml \
-php-zip \
-pwgen \
-vim \
-&& apt-get clean \
-&& rm -rf /var/lib/apt/lists/
-
-RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf
-
-ENV MYSQL_PASS="ogsteam"
-
-#Environment variables to configure php
-ENV PHP_UPLOAD_MAX_FILESIZE 10M
-ENV PHP_POST_MAX_SIZE 10M
-
-# Configure /app folder with sample app
-COPY . /app
-#RUN git clone -b develop https://github.com/ogsteam/ogspy /app
-RUN git clone -b master https://github.com/ogsteam/mod-autoupdate /app/mod/autoupdate
-RUN git clone -b master https://github.com/ogsteam/mod-xtense /app/mod/xtense
-RUN git clone -b master https://github.com/ogsteam/mod-production /app/mod/production
-RUN git clone -b master https://github.com/ogsteam/mod-tempsvols /app/mod/tempsvols
-RUN git clone -b master https://github.com/ogsteam/mod-bthof /app/mod/bthof
-
-# .SH executable
-RUN chmod 755 /app/.docker/*.sh
-
-# Configuration environment
-WORKDIR /app/.docker/
-RUN /app/.docker/configure.sh
-
-# Add volumes for MySQL
-VOLUME ["/etc/mysql", "/var/lib/mysql", "/app" ]
-
-EXPOSE 80 3306
-CMD ["/app/.docker/run.sh"]
diff --git a/.docker/Dockerfile.nginx b/.docker/Dockerfile.nginx
new file mode 100644
index 00000000..722d87db
--- /dev/null
+++ b/.docker/Dockerfile.nginx
@@ -0,0 +1,27 @@
+FROM nginx:stable-alpine AS base
+
+RUN printf "\
+ server {\n\
+ listen 80;\n\
+ index index.php index.html;\n\
+ error_log /var/log/nginx/error.log;\n\
+ access_log /var/log/nginx/access.log;\n\
+ root /var/www/html;\n\
+ location ~ \.php$ {\n\
+ try_files \$uri =404;\n\
+ fastcgi_split_path_info ^(.+\.php)(/.+)$;\n\
+ fastcgi_pass ogspy:9000;\n\
+ fastcgi_index index.php;\n\
+ include fastcgi_params;\n\
+ fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;\n\
+ fastcgi_param PATH_INFO \$fastcgi_path_info;\n\
+ }\n\
+ location / {\n\
+ try_files \$uri \$uri/ /index.php?\$query_string;\n\
+ gzip_static on;\n\
+ }\n\
+ }\n" > /etc/nginx/conf.d/default.conf
+
+EXPOSE 80
+
+CMD ["nginx", "-g", "daemon off;"]
diff --git a/.docker/Dockerfile.ogspy b/.docker/Dockerfile.ogspy
new file mode 100644
index 00000000..2c237ff0
--- /dev/null
+++ b/.docker/Dockerfile.ogspy
@@ -0,0 +1,56 @@
+FROM php:8.2-fpm-alpine3.19 AS build
+
+RUN apk --no-cache add php-session \
+ php-tokenizer \
+ php-xml \
+ php-ctype \
+ php-curl \
+ php-dom \
+ php-fileinfo \
+ php-mbstring \
+ php-openssl \
+ php-pdo \
+ php-pdo_mysql \
+ php-mysqli \
+ php-session \
+ php-tokenizer \
+ php-xml \
+ php-ctype \
+ php-xmlwriter \
+ php-simplexml \
+ git \
+ composer
+
+RUN docker-php-ext-install mysqli pdo_mysql
+RUN docker-php-ext-enable mysqli pdo_mysql
+
+# RUN apk --no-cache add --update nodejs npm
+
+RUN git clone -b develop https://github.com/ogsteam/ogspy /var/www/html
+RUN git clone -b master https://github.com/ogsteam/mod-autoupdate /var/www/html/mod/autoupdate
+RUN git clone -b master https://github.com/ogsteam/mod-xtense /var/www/html/mod/xtense
+RUN git clone -b master https://github.com/ogsteam/mod-production /var/www/html/mod/production
+RUN git clone -b master https://github.com/ogsteam/mod-tempsvols /var/www/html/mod/tempsvols
+RUN git clone -b master https://github.com/ogsteam/mod-bthof /var/www/html/mod/bthof
+
+COPY id.php /var/www/html/parameters/id.php
+COPY key.php /var/www/html/parameters/key.php
+
+WORKDIR /var/www/html
+
+RUN composer install
+# RUN npm install
+
+EXPOSE 9000
+
+RUN printf "\
+rm -Rf /var/www/html/install\n\
+rm -Rf /var/www/html/.git\n\
+chmod -R o+w /var/www/html/\n\
+chown -R root:root /var/www/html/\n\
+php-fpm\n\
+" > /start.sh
+
+RUN chmod +x "/start.sh"
+
+ENTRYPOINT "/start.sh"
diff --git a/.docker/README.md b/.docker/README.md
deleted file mode 100644
index 83e4c579..00000000
--- a/.docker/README.md
+++ /dev/null
@@ -1,22 +0,0 @@
-# OGSpy Docker
-
-PHP 7.06 Maria DB
-
-Based on work done by tutumcloud
-https://github.com/tutumcloud/lamp
-
-## Usage
-
-- Get the image: `docker pull ogsteam/ogspy`
-
-- Run the image: `docker run -d -p80:80 --name ogspy_container ogsteam/ogspy`
-
-- Install OGSpy with Database settings:
- Open with your browser http://127.0.0.1 (The page could appear after some time corresponding to the service startup time)
-
- > Database : ogspy
- > user : ogsteam
- > password : password
-
-- When installation is finished remove install Folder:
- `docker exec ogspy_container rm -Rf /app/install`
diff --git a/.docker/apache_default b/.docker/apache_default
deleted file mode 100644
index 91e5e220..00000000
--- a/.docker/apache_default
+++ /dev/null
@@ -1,35 +0,0 @@
-
- ServerAdmin webmaster@localhost
-
- DocumentRoot /var/www/html
-
- Options FollowSymLinks
- AllowOverride None
-
-
- Options Indexes FollowSymLinks MultiViews
- # To make wordpress .htaccess work
- AllowOverride All
- Require all granted
-
-
- ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
-
- AllowOverride None
- Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
- Require all granted
-
-
- ErrorLog ${APACHE_LOG_DIR}/error.log
-
- # Possible values include: debug, info, notice, warn, error, crit,
- # alert, emerg.
- LogLevel warn
-
- CustomLog ${APACHE_LOG_DIR}/access.log combined
-
- # Set HTTPS environment variable if we came in over secure
- # channel.
- SetEnvIf x-forwarded-proto https HTTPS=on
-
-
diff --git a/.docker/configure.sh b/.docker/configure.sh
deleted file mode 100644
index a04fe03c..00000000
--- a/.docker/configure.sh
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/bin/bash
-
-# RUN git clone -b develop https://github.com/ogsteam/ogspy /app
-# RUN git clone -b master https://github.com/ogsteam/mod-autoupdate /app/mod/autoupdate
-# RUN chmod 755 /app/.docker/*.sh
-
-# Change working directory
-cd /app/.docker
-
-# Change configuration files
-mv /app/.docker/my.cnf /etc/mysql/conf.d/my.cnf
-mv /app/.docker/supervisord-apache2.conf /etc/supervisor/conf.d/supervisord-apache2.conf
-mv /app/.docker/supervisord-mysqld.conf /etc/supervisor/conf.d/supervisord-mysqld.conf
-
-# Remove pre-installed database
-rm -rf /var/lib/mysql/*
-
-# config to enable .htaccess
-mv /app/.docker/apache_default /etc/apache2/sites-available/000-default.conf
-a2enmod rewrite
-
-# Configure /app folder with sample app
-chown -R www-data:www-data /app
-mkdir -p /app && rm -fr /var/www/html && ln -s /app /var/www/html
-
-# Configure OGSpy
-rm -Rf /app/install
-mv /app/.docker/id.php /app/parameters/id.php
-mv /app/.docker/key.php /app/parameters/key.php
-
-# Clean OGSpy
-rm -Rf /app/.git
\ No newline at end of file
diff --git a/.docker/create_mysql_admin_user.sh b/.docker/create_mysql_admin_user.sh
deleted file mode 100644
index 6b1e6aef..00000000
--- a/.docker/create_mysql_admin_user.sh
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/bin/bash
-
-/usr/bin/mysqld_safe > /dev/null 2>&1 &
-
-RET=1
-while [[ RET -ne 0 ]]; do
- echo "=> Waiting for confirmation of MySQL service startup"
- sleep 5
- mysql -uroot -e "status" > /dev/null 2>&1
- RET=$?
-done
-
-PASS=${MYSQL_PASS:-$(pwgen -s 12 1)}
-_word=$( [[ ${MYSQL_PASS} ]] && echo "preset" || echo "random" )
-echo "=> Creating MySQL admin user with ${_word} password"
-
-mysql -uroot -e "CREATE USER 'admin'@'localhost' IDENTIFIED BY 'ogsteam'"
-mysql -uroot -e "GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION"
-#mysql -uroot -e "GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' IDENTIFIED VIA unix_socket WITH GRANT OPTION"
-
-mysql -uroot -e "CREATE DATABASE ogspy"
-# You can create a /mysql-setup.sh file to intialized the DB
-if [[ -f /app/.docker/mysql-setup.sh ]]; then
- . /app/.docker/mysql-setup.sh
-fi
-
-echo "=> Done!"
-
-echo "========================================================================"
-echo "You can now connect to this MySQL Server using:"
-echo ""
-echo " mysql -uadmin -p$PASS -h -P"
-echo ""
-echo "Please remember to change the above password as soon as possible!"
-echo "MySQL user 'root' has no password but only allows local connections"
-echo "========================================================================"
-
-mysqladmin -uroot shutdown
diff --git a/.docker/db/1-DBSetup.sql b/.docker/db/1-DBSetup.sql
new file mode 100644
index 00000000..515a43f3
--- /dev/null
+++ b/.docker/db/1-DBSetup.sql
@@ -0,0 +1,8 @@
+-- create the databases
+CREATE DATABASE IF NOT EXISTS ogspy;
+
+-- create the users for each database
+CREATE USER 'admin'@'%' IDENTIFIED BY 'ogsteam';
+GRANT CREATE, ALTER, INDEX, LOCK TABLES, REFERENCES, UPDATE, DELETE, DROP, SELECT, INSERT ON `ogspy`.* TO 'admin'@'%';
+
+FLUSH PRIVILEGES;
diff --git a/.docker/ogspy_docker.sql b/.docker/db/2-ogspy_docker.sql
similarity index 99%
rename from .docker/ogspy_docker.sql
rename to .docker/db/2-ogspy_docker.sql
index 0c7a79d2..0841ce1a 100644
--- a/.docker/ogspy_docker.sql
+++ b/.docker/db/2-ogspy_docker.sql
@@ -991,4 +991,4 @@ INSERT INTO `ogspy_user_building` (`user_id`, `planet_id`, `planet_name`, `coord
(1, 104, 'colonie' , '9:62:8' , 296, 'm:0:0_c:0:0_d:0:0_e:0:0_p:0_m:0' , 7, 47, 2200, 100, 841, 150, 38, 100, 34, 100, 34, 100, 28, 100, 20, 40, 10, 7, 12, 13, 11, 10, 18, 6, 1, 8, 7, 0, 0, 0);
INSERT INTO `ogspy_user_technology` (`user_id`, `Esp`, `Ordi`, `Armes`, `Bouclier`, `Protection`, `NRJ`, `Hyp`, `RC`, `RI`, `PH`, `Laser`, `Ions`, `Plasma`, `RRI`, `Graviton`, `Astrophysique`) VALUES
-(1, 20, 20, 20, 20, 20, 20, 17, 20, 17, 16, 20, 20, 19, 12, 2, 23);
\ No newline at end of file
+(1, 20, 20, 20, 20, 20, 20, 17, 20, 17, 16, 20, 20, 19, 12, 2, 23);
diff --git a/.docker/default.conf b/.docker/default.conf
new file mode 100644
index 00000000..3a3d544c
--- /dev/null
+++ b/.docker/default.conf
@@ -0,0 +1,22 @@
+server {
+ listen 80;
+ server_name localhost;
+
+ root /var/www/html;
+ index index.php index.html;
+
+ location / {
+ try_files $uri $uri/ /index.php?_share=;
+ }
+
+ location ~ \.php$ {
+ try_files $uri =404;
+ fastcgi_pass php8-fpm:9000;
+ fastcgi_param SCRIPT_FILENAME $request_filename;
+ include fastcgi_params;
+ }
+
+ location ~ /\.ht {
+ deny all;
+ }
+}
diff --git a/.docker/docker-compose.yml b/.docker/docker-compose.yml
new file mode 100644
index 00000000..3b6fa329
--- /dev/null
+++ b/.docker/docker-compose.yml
@@ -0,0 +1,65 @@
+name: my-ogspy
+
+networks:
+ ogspy-network:
+ driver: bridge
+
+volumes:
+ ogspy-db:
+ driver: local
+ ogspy-app:
+ driver: local
+
+services:
+ db:
+ image: mariadb
+ expose:
+ - 3306
+ networks:
+ - ogspy-network
+ environment:
+ MYSQL_ROOT_PASSWORD: password
+ MYSQL_USER: demo
+ MYSQL_PASSWORD: ogsteam
+ volumes:
+ - ogspy-db:/var/lib/mysql
+ - ./db:/docker-entrypoint-initdb.d
+ restart: always
+
+ ogspy:
+ build:
+ context: .
+ dockerfile: Dockerfile.ogspy
+ networks:
+ - ogspy-network
+ volumes:
+ - ogspy-app:/var/www/html
+ - ./parameters:/var/www/html/parameters
+ restart: always
+ depends_on:
+ - db
+
+ nginx:
+ build:
+ context: .
+ dockerfile: Dockerfile.nginx
+ volumes:
+ - ogspy-app:/var/www/html
+ ports:
+ - "16005:80"
+ networks:
+ - ogspy-network
+
+
+
+ phpmyadmin:
+ image: phpmyadmin
+ ports:
+ - "16006:80"
+ environment:
+ - PMA_HOST=db
+ - PMA_PORT=3306
+ - UPLOAD_LIMIT=50000000
+ networks:
+ - ogspy-network
+ restart: always
diff --git a/.docker/my.cnf b/.docker/my.cnf
deleted file mode 100644
index 84e7bbfc..00000000
--- a/.docker/my.cnf
+++ /dev/null
@@ -1,2 +0,0 @@
-[mysqld]
-bind-address=0.0.0.0
diff --git a/.docker/mysql-setup.sh b/.docker/mysql-setup.sh
deleted file mode 100644
index bedf762f..00000000
--- a/.docker/mysql-setup.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/bash
-echo "=> Initializing Data for OGSpy DB"
-mysql -uroot < ogspy_docker.sql
-echo "=> Populate OGSpy DB Done!"
diff --git a/.docker/id.php b/.docker/parameters/id.php
similarity index 95%
rename from .docker/id.php
rename to .docker/parameters/id.php
index a47d00f7..c2716b68 100644
--- a/.docker/id.php
+++ b/.docker/parameters/id.php
@@ -9,7 +9,7 @@
$table_prefix = "ogspy_";
//Paramètres de connexion à la base de données
-$db_host = "localhost";
+$db_host = "db";
$db_user = "admin";
$db_password = "ogsteam";
$db_database = "ogspy";
diff --git a/.docker/key.php b/.docker/parameters/key.php
similarity index 100%
rename from .docker/key.php
rename to .docker/parameters/key.php
diff --git a/.docker/parameters/salt b/.docker/parameters/salt
new file mode 100644
index 00000000..2666ac8f
--- /dev/null
+++ b/.docker/parameters/salt
@@ -0,0 +1 @@
+Ykaj9H5dTPV
\ No newline at end of file
diff --git a/.docker/run.sh b/.docker/run.sh
deleted file mode 100644
index 4a3ab45f..00000000
--- a/.docker/run.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/bin/bash
-
-VOLUME_HOME="/var/lib/mysql"
-
-sed -ri -e "s/^upload_max_filesize.*/upload_max_filesize = ${PHP_UPLOAD_MAX_FILESIZE}/" \
- -e "s/^post_max_size.*/post_max_size = ${PHP_POST_MAX_SIZE}/" /etc/php/7.2/apache2/php.ini
-if [[ ! -d $VOLUME_HOME/mysql ]]; then
- echo "=> An empty or uninitialized MySQL volume is detected in $VOLUME_HOME"
- echo "=> Installing MySQL ..."
- mysql_install_db > /dev/null 2>&1
- echo "=> Done!"
- /app/.docker/create_mysql_admin_user.sh
-else
- echo "=> Using an existing volume of MySQL"
-fi
-
-exec supervisord -n
diff --git a/.docker/start-apache2.sh b/.docker/start-apache2.sh
deleted file mode 100644
index 5dccd01c..00000000
--- a/.docker/start-apache2.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/bash
-source /etc/apache2/envvars
-exec apache2 -D FOREGROUND
diff --git a/.docker/start-mysqld.sh b/.docker/start-mysqld.sh
deleted file mode 100644
index 38091559..00000000
--- a/.docker/start-mysqld.sh
+++ /dev/null
@@ -1,2 +0,0 @@
-#!/bin/bash
-exec mysqld_safe
diff --git a/.docker/supervisord-apache2.conf b/.docker/supervisord-apache2.conf
deleted file mode 100644
index 0d003e57..00000000
--- a/.docker/supervisord-apache2.conf
+++ /dev/null
@@ -1,5 +0,0 @@
-[program:apache2]
-command=/app/.docker/start-apache2.sh
-numprocs=1
-autostart=true
-autorestart=true
diff --git a/.docker/supervisord-mysqld.conf b/.docker/supervisord-mysqld.conf
deleted file mode 100644
index 9be84d80..00000000
--- a/.docker/supervisord-mysqld.conf
+++ /dev/null
@@ -1,5 +0,0 @@
-[program:mysqld]
-command=/app/.docker/start-mysqld.sh
-numprocs=1
-autostart=true
-autorestart=true