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