Files
SyspanelLamp/2404/Dockerfile.mariadb
T
2026-09-06 19:35:42 -03:00

139 lines
4.9 KiB
Docker
Executable File

# SyspanelLamp - Ubuntu 24.04 + Apache + PHP 8.3 + MariaDB + PHPMyAdmin + Adminer + Redis
# Author: Marco Costa & Syspanel (www.syspanel.com.br)
# Creation date: 05/09/2026
# License: MIT
ARG PHP_VERSION=8.3
ARG DB_ROOT_PASS=admin123
FROM ubuntu:24.04 AS base
SHELL ["/bin/bash", "-lc"]
ENV DEBIAN_FRONTEND=noninteractive \
TZ=America/Sao_Paulo \
APACHE_RUN_USER=www-data \
APACHE_RUN_GROUP=www-data \
APACHE_LOG_DIR=/var/log/apache2 \
APACHE_LOCK_DIR=/var/lock/apache2 \
APACHE_PID_FILE=/var/run/apache2/apache2.pid
# -------------------------------------------------------------------------
# Install base system packages
# -------------------------------------------------------------------------
RUN apt-get update && apt-get install -y --no-install-recommends \
apt-transport-https \
ca-certificates \
curl \
wget \
git \
unzip \
zip \
gnupg2 \
lsb-release \
software-properties-common \
locales \
&& locale-gen en_US.UTF-8 && locale-gen pt_BR.UTF-8 \
&& update-locale LANG=en_US.UTF-8 \
&& ln -snf /usr/share/zoneinfo/$TZ /etc/localtime \
&& echo $TZ > /etc/timezone \
&& rm -rf /var/lib/apt/lists/*
ENV LANG=en_US.UTF-8
ENV LC_ALL=en_US.UTF-8
# -------------------------------------------------------------------------
# Install PHP 8.3 (Ubuntu 24.04 native)
# -------------------------------------------------------------------------
RUN apt-get update && apt-get install -y --no-install-recommends \
apache2 \
php8.3 \
php8.3-cli \
php8.3-common \
php8.3-curl \
php8.3-mbstring \
php8.3-mysql \
php8.3-pdo \
php8.3-pdo-mysql \
php8.3-xml \
php8.3-zip \
php8.3-gd \
php8.3-imagick \
php8.3-intl \
php8.3-bcmath \
php8.3-soap \
php8.3-redis \
php8.3-opcache \
php8.3-readline \
php8.3-memcached \
libapache2-mod-php8.3 \
redis-server \
&& rm -rf /var/lib/apt/lists/*
# Enable Apache PHP module and required modules
RUN a2enmod php8.3 && a2enmod rewrite && a2enmod headers
# -------------------------------------------------------------------------
# Environment variables to configure PHP
# -------------------------------------------------------------------------
ENV TZ=America/Sao_Paulo
ENV PHP_UPLOAD_MAX_FILESIZE=2048M
ENV PHP_POST_MAX_SIZE=2048M
# Configure PHP settings (apache2 + cli) — shared config
COPY configs/php/php.ini /etc/php/8.3/apache2/php.ini
COPY configs/php/php.ini /etc/php/8.3/cli/php.ini
# -------------------------------------------------------------------------
# Install MariaDB
# -------------------------------------------------------------------------
ARG DB_ROOT_PASS
RUN apt-get update && apt-get install -y --no-install-recommends \
mariadb-server \
mariadb-client \
&& rm -rf /var/lib/apt/lists/*
# Prepare MariaDB runtime directories
RUN mkdir -p /var/run/mysqld /var/lib/mysql /var/log/mysql && \
chown -R mysql:mysql /var/run/mysqld /var/lib/mysql /var/log/mysql
# Wipe any build-time MariaDB init so entrypoint always boots fresh
RUN rm -rf /var/lib/mysql/*
# -------------------------------------------------------------------------
# Install Adminer (latest stable - v6.0.1)
# -------------------------------------------------------------------------
RUN mkdir -p /var/www/adminer && \
curl -fsSL -o /var/www/adminer/index.php https://github.com/vrana/adminer/releases/download/v6.0.1/adminer-6.0.1.php
# -------------------------------------------------------------------------
# Install PHPMyAdmin (5.2.1)
# -------------------------------------------------------------------------
RUN mkdir -p /var/www/phpmyadmin && \
curl -fsSL -o /tmp/phpmyadmin.tar.gz https://files.phpmyadmin.net/phpMyAdmin/5.2.1/phpMyAdmin-5.2.1-all-languages.tar.gz && \
tar -xzf /tmp/phpmyadmin.tar.gz -C /tmp && \
cp -r /tmp/phpMyAdmin-5.2.1-all-languages/* /var/www/phpmyadmin/ && \
rm -rf /tmp/phpmyadmin.tar.gz /tmp/phpMyAdmin-5.2.1-all-languages
# -------------------------------------------------------------------------
# Apache site configuration
# -------------------------------------------------------------------------
COPY configs/apache/apache_default /etc/apache2/sites-available/000-default.conf
COPY configs/apache/apache_envvars.sh /etc/apache2/envvars
# -------------------------------------------------------------------------
# MariaDB configuration
# -------------------------------------------------------------------------
COPY configs/mysql/my.cnf /etc/mysql/my.cnf
COPY configs/mysql/init.sql /docker-entrypoint-initdb.d/init.sql
# -------------------------------------------------------------------------
# Entrypoint script
# -------------------------------------------------------------------------
COPY configs/scripts/entrypoint-mariadb.sh /usr/local/bin/entrypoint.sh
RUN chmod +x /usr/local/bin/entrypoint.sh
EXPOSE 80 3306 6379 5050
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
CMD ["apache2ctl", "-D", "FOREGROUND"]