Initial release

This commit is contained in:
2021-04-28 16:03:38 +02:00
commit dd2eaf814f
15 changed files with 278 additions and 0 deletions

0
README.md Normal file
View File

View File

@@ -0,0 +1,24 @@
# Redirect to SSL
<VirtualHost *:80>
ServerName www.test.com
Redirect permanent / https://www.test.com
</VirtualHost>
<VirtualHost *:443>
ServerAdmin webmaster@test.com
ServerName www.test.com
DocumentRoot /var/www/html/www.test.com
ErrorLog ${APACHE_LOG_DIR}/www.test.com-error.log
CustomLog ${APACHE_LOG_DIR}/www.test.com-access.log combined
SSLEngine on
SSLCertificateFile /etc/ssl/custom/www.test.com/www.test.com.cer
SSLCertificateKeyFile /etc/ssl/custom/www.test.com/www.test.com.key
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /var/www/test.com.com>
SSLOptions +StdEnvVars
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>

16
config/mysql/my.cnf Normal file
View File

@@ -0,0 +1,16 @@
[mysqld]
bind-address=0.0.0.0
skip-name-resolve=1
log_error =/var/log/mysql/mysql_error.log
general_log_file=/var/log/mysql/mysql.log
general_log =1
#slow_query_log =1
#slow_query_log_file=/var/log/mysql/mysql_slow.log
#long_query_time =2
#log_queries_not_using_indexes = 1
innodb_buffer_pool_instances = 2
innodb-buffer-pool-size=2G
wait_timeout = 28800
innodb_log_file_size = 256MB
max_allowed_packet = 128M
interactive_timeout = 28800

14
config/php-fpm/php.ini Normal file
View File

@@ -0,0 +1,14 @@
[php]
date.timezone=UTC+1
log_errors=On
error_reporting=E_ALL & ~E_DEPRECATED & ~E_STRICT
display_errors=Off
max_execution_time=60
memory_limit=1024M
error_log=/var/log/php/error.log
access_log=/var/log/php/access.log
post_max_size=512M
upload_max_filesize=512M
short_open_tag=On
catch_workers_output = yes
log_errors = on

3
config/php/php.ini Normal file
View File

@@ -0,0 +1,3 @@
memory_limit = 256M
post_max_size = 100M
upload_max_filesize = 100M

View File

@@ -0,0 +1 @@
$cfg['ExecTimeLimit'] = 0;

5
config/pma/php.ini Normal file
View File

@@ -0,0 +1,5 @@
[php]
memory_limit=2048M
upload_max_filesize=512M
short_open_tag=On
max_execution_time=60

View File

@@ -0,0 +1,20 @@
-----BEGIN CERTIFICATE-----
MIIFmDCCBICgAwIBAgIQCfIZA5I5bSNWO37MufoFmzANBgkqhkiG9w0BAQsFADBu
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
d3cuZGlnaWNlcnQuY29tMS0wKwYDVQQDEyRFbmNyeXB0aW9uIEV2ZXJ5d2hlcmUg
RFYgVExTIENBIC0gRzEwHhcNMjEwMTE4MDAwMDAwWhcNMjIwMTE3MjM1OTU5WjAf
MR0wGwYDVQQDDBQqLnNlcnZpY2VwYXJ0czI0LmNvbTCCASIwDQYJKoZIhvcNAQEB
BQADggEPADCCAQoCggEBAIcgWCF5R0KWXw2uYgjoM2rlAxGkunAa41edGyJUbfTd
kVQlKtrW2z5s8iVKn/frnCj+Ii3BSCdzqAGjXJsKCUxJNrj4xXkiL+69bOuwtUP0
j37Cqt0UkkSY7JHAU0/3DJZb+dnWm0dq9ooi0EDX1rYFN7GG0uc/04kMRDprQahP
eU28jLdLz0HUiY92ixQ5bMDcehqkvl1uUlRSun3K7Z0F3DvkfuWXLGafO0g4VMFN
MBz3nlvdp820ExMul8eDFCocUIFBYr4/2XnKacAZ0ZSnGLe0O6eHSe+GtSlQLEzr
lv9pRfn/uVbKnB1o3b0TYGU0akTTNnJDH6ycx0EQEvECAwEAAaOCAn8wggJ7MB8G
A1UdIwQYMBaAFFV0T7JyT/VgulDR1+ZRXJoBhxrXMB0GA1UdDgQWBBR6IAvKJww+
4tSJhRQWwBLvR7U07DAzBgNVHREELDAqghQqLnNlcnZpY2VwYXJ0czI0LmNvbYIS
c2VydmljZXBhcnRzMjQuY29tMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggr
BgEFBQcDAQYIKwYBBQUHAwIwPgYDVR0gBDcwNTAzBgZngQwBAgEwKTAnBggrBgEF
BQcCARYbaHR0cDovL3d3dy5kaWdpY2VydC5jb20vQ1BTMIGABggrBgEFBQcBAQR0
MHIwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBKBggrBgEF
BQcwAoY+aHR0cDovLasdasdasd
-----END CERTIFICATE-----

View File

@@ -0,0 +1,19 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEAhyBYIXlHQpZfDa5iCOgzauUDEaS6cBrjV50bIlRt9N2RVCUq
2tbbPmzyJUqf9+ucKP4iLcFIJ3OoAaNcmwoJTEk2uPjFeSIv7r1s67C1Q/SPfsKq
3RSSRJjskcBTT/cMllv52dabR2r2iiLQQNfWtgU3sYbS5z/TiQxEOmtBqE95TbyM
t0vPQdSJj3aLFDlswNx6GqS+XW5SVFK6fcrtnQXcO+R+5ZcsZp87SDhUwU0wHPee
W92nzbQTEy6Xx4MUKhxQgUFivj/ZecppwBnRlKcYt7Q7p4dJ74a1KVAsTOuW/2lF
+f+5VsqcHWjdvRNgZTRqRNM2ckMfrJzHQRAS8QIDAQABAoIBAArscHN0THBzm4eN
m1tA+jcgAFmCyZeadNp2VuU1khYDe2YkAwzh5aNsRz8Ag2IVZ/Bgav7r6xtVXDWV
sTzPWOUT3hqh8cTTILDaG14KUP0HXjpPHmT07sYg3q8Brzp9rETTdqVHlhH18axF
GDTFvhPE5DWzwoTzQfSIS1O1q/8hHzR76LAI+l82rrNeD11zFZZ0BYaB7ebWWPN2
/xi4C1QvHWSKz/m0WeGodpf+iy4k3tqnN7EGHgcn9Ro+nOSSrCLPWjBHcD/sBgeT
xwKA/ESwpbW0QHp1nKvn0oK3Q0NksISsNffVgI21XgaNFU0DwyOxSXeLC61grcXo
v06vgAkCgYEA160bHm6RQdNEZXJ7kb5hrJ1XHQWkaFAh8GF1MkaHsDAi8NiIIQ46
2+L5pBDbjXk11wXG6Augbd4nJbostwWZy3sHqzv6mu1Uvh1WzH8X5t8lQEyYHhyZ
d6rK0lcXARP8p1i28EUR+oHn6y0BK9bK5WwLVqaW/NFs1VhrI7oqv+cCgYEAoGPi
/i8inUWJYWF2J6ZSh7kjkJDS5TxZoe8AldscAG8vMGfkmrMaz/t2zf06ByCo1wks
ijvbeOI3AGBE5C3hIcNNnXXnkHjdrR0pXb9pxI1CuFEdjmJV8eSmUKzVoWG3wkLU
/2ekYHPadasdasd
-----END RSA PRIVATE KEY-----

5
data/www/index.html Normal file
View File

@@ -0,0 +1,5 @@
<html>
<body>
Test
</body>
</html>

1
data/www/phpinfo.php Normal file
View File

@@ -0,0 +1 @@
<?php phpinfo()?>

75
docker-compose.yaml Normal file
View File

@@ -0,0 +1,75 @@
version: '3.3'
services:
php-fpm:
container_name: php-fpm
build:
context: './docker/php-fpm'
restart: always
volumes:
- '${DOCUMENT_ROOT}:/var/www/html'
- '${PHP_FPM_INI}:/usr/local/etc/php/conf.d/php.override.ini'
- '${LOG_ROOT}php-fpm:/var/log/php'
environment:
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
depends_on:
- 'mysql'
mysql:
container_name: mysql
build:
context: './docker/mysql'
restart: always
command: --default-authentication-plugin=mysql_native_password
environment:
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
- TZ=Europe/Berlin
- MYSQL_USER=${MYSQL_USER_NEW}
- MYSQL_PASSWORD=${MYSQL_PASSWORD_NEW}
- MYSQL_DATABASE=${MYSQL_DATABASE_NEW}
ports:
- '${MYSQL_PORT}:3306'
volumes:
- '${MYSQL_CONFIG_ROOT}:/etc/mysql/conf.d'
- '${LOG_ROOT}mysql:/var/log/mysql'
- '${MYSQL_BACKUP}:/var/log/mysql/backup'
phpmyadmin:
container_name: 'phpmyadmin'
image: phpmyadmin/phpmyadmin
restart: always
depends_on:
- mysql
- apache
- php-fpm
volumes:
- '${PMA_CFG}:/etc/phpmyadmin/config.user.inc.php'
- '${PHP_PMA_INI}:/usr/local/etc/php/php.ini'
environment:
PMA_HOST: mysql
PMA_PORT: 3306
PMA_USER: root
PMA_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
UPLOAD_LIMIT: 1G
ports:
- '${PMA_PORT}:80'
apache:
build:
context: ./docker/apache
container_name: 'apache'
restart: 'always'
ports:
- "${APACHE_PORT}:80"
- "${APACHES_PORT}:443"
depends_on:
- mysql
volumes:
- ${DOCUMENT_ROOT}:/var/www/html
- ${EXZEICHNUNGEN}:/var/www/html/Exzeichnungen
- ${PHP_INI}:/usr/local/etc/php/php.ini
- ${APACHE_VHOSTS}:/etc/apache2/sites-enabled
- ${LOG_ROOT}apache:/var/log/apache2
- ${SSL_ROOT}:/etc/ssl/custom
environment:
PMA_PORT: ${PMA_PORT}

81
docker/apache/Dockerfile Normal file
View File

@@ -0,0 +1,81 @@
FROM php:7.4.2-apache-buster
# Surpresses debconf complaints of trying to install apt packages interactively
# https://github.com/moby/moby/issues/4032#issuecomment-192327844
ARG DEBIAN_FRONTEND=noninteractive
# Update
RUN apt-get -y update --fix-missing && \
apt-get upgrade -y && \
apt-get --no-install-recommends install -y apt-utils && \
rm -rf /var/lib/apt/lists/*
# Install useful tools and install important libaries
RUN apt-get -y update && \
apt-get -y --no-install-recommends install nano wget \
dialog \
libsqlite3-dev \
libsqlite3-0 && \
apt-get -y --no-install-recommends install default-mysql-client \
zlib1g-dev \
libzip-dev \
libicu-dev && \
apt-get -y --no-install-recommends install --fix-missing apt-utils \
build-essential \
git \
curl \
libonig-dev && \
apt-get -y --no-install-recommends install --fix-missing libcurl4 \
libcurl4-openssl-dev \
zip \
openssl && \
rm -rf /var/lib/apt/lists/* && \
curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
# Install xdebug
RUN pecl install xdebug-2.8.0 && \
docker-php-ext-enable xdebug
# Install redis
RUN pecl install redis-5.1.1 && \
docker-php-ext-enable redis
# Install imagick
RUN apt-get update && \
apt-get -y --no-install-recommends install --fix-missing libmagickwand-dev && \
rm -rf /var/lib/apt/lists/* && \
pecl install imagick && \
docker-php-ext-enable imagick
# Other PHP7 Extensions
RUN docker-php-ext-install pdo_mysql && \
docker-php-ext-install pdo_sqlite && \
docker-php-ext-install mysqli && \
docker-php-ext-install curl && \
docker-php-ext-install tokenizer && \
docker-php-ext-install json && \
docker-php-ext-install zip && \
docker-php-ext-install -j$(nproc) intl && \
docker-php-ext-install mbstring && \
docker-php-ext-install gettext && \
docker-php-ext-install exif
# Install Freetype
RUN apt-get -y update && \
apt-get --no-install-recommends install -y libfreetype6-dev \
libjpeg62-turbo-dev \
libpng-dev && \
rm -rf /var/lib/apt/lists/* && \
docker-php-ext-configure gd --enable-gd --with-freetype --with-jpeg && \
docker-php-ext-install gd
# Enable apache modules
RUN a2enmod rewrite headers
RUN a2enmod ssl
# Cleanup
RUN rm -rf /usr/src/*

5
docker/mysql/Dockerfile Normal file
View File

@@ -0,0 +1,5 @@
FROM mysql:latest
RUN mkdir -p /var/log/mysql/backup
RUN touch /var/log/mysql/mysql_error.log /var/log/mysql/mysql.log /var/log/mysql/mysql_slow.log
RUN chown -R mysql:root /var/log/mysql

View File

@@ -0,0 +1,9 @@
FROM php:7.4.13-fpm-alpine3.12
RUN docker-php-ext-install mysqli pdo pdo_mysql
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
# Set working directory
WORKDIR /var/www