139 lines
4.9 KiB
Docker
Executable File
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"]
|