first commit

This commit is contained in:
2026-04-05 18:17:09 +07:00
commit 97109c2336
77 changed files with 2913 additions and 0 deletions
+39
View File
@@ -0,0 +1,39 @@
# Скопируйте в docker/app.env и при необходимости измените значения.
# Секреты для продакшена задаются через Ansible Vault, не коммитьте docker/app.env.
MYSQL_DATABASE=laravel
MYSQL_USER=db
MYSQL_PASSWORD=secret
MYSQL_ROOT_PASSWORD=rootsecret
APP_NAME=Laravel
APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_URL=http://localhost:8080
LOG_CHANNEL=stack
LOG_LEVEL=debug
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=db
DB_PASSWORD=secret
SESSION_DRIVER=file
CACHE_STORE=file
FILESYSTEM_DISK=local
QUEUE_CONNECTION=redis
REDIS_CLIENT=phpredis
REDIS_HOST=redis
REDIS_PASSWORD=
REDIS_PORT=6379
MAIL_MAILER=log
# Для phpMyAdmin (ссылки в интерфейсе)
PMA_ABSOLUTE_URI=http://localhost:8080/pma/
+36
View File
@@ -0,0 +1,36 @@
server {
listen 80;
server_name _;
root /var/www/html/public;
index index.php;
client_max_body_size 64M;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
# phpMyAdmin за единым входом Nginx приложения
location /pma/ {
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://phpmyadmin:80/;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_pass php:9000;
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
fastcgi_read_timeout 120;
}
location ~ /\.(?!well-known).* {
deny all;
}
}
+24
View File
@@ -0,0 +1,24 @@
# PHP-FPM для Laravel с расширениями под MySQL и Redis.
FROM php:8.3-fpm-bookworm
RUN apt-get update && apt-get install -y --no-install-recommends \
git \
unzip \
libzip-dev \
libpng-dev \
libonig-dev \
libicu-dev \
&& docker-php-ext-install -j$(nproc) pdo_mysql zip intl opcache \
&& pecl install redis \
&& docker-php-ext-enable redis \
&& rm -rf /var/lib/apt/lists/*
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer
WORKDIR /var/www/html
COPY docker/php/entrypoint.sh /usr/local/bin/entrypoint.sh
RUN chmod +x /usr/local/bin/entrypoint.sh
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
CMD ["php-fpm"]
+27
View File
@@ -0,0 +1,27 @@
#!/bin/sh
set -e
cd /var/www/html
# Синхронизация Laravel .env с файлом конфигурации Docker (настройки — в файлах, не в ENV хоста).
if [ -f docker/app.env ]; then
cp docker/app.env .env
elif [ ! -f .env ] && [ -f docker/app.env.example ]; then
cp docker/app.env.example .env
fi
if [ ! -d vendor ] || [ ! -f vendor/autoload.php ]; then
composer install --no-interaction --prefer-dist --optimize-autoloader
fi
if [ -f artisan ]; then
mkdir -p storage/framework/{sessions,views,cache} storage/logs bootstrap/cache
chown -R www-data:www-data storage bootstrap/cache 2>/dev/null || true
php artisan config:clear 2>/dev/null || true
if ! grep -q '^APP_KEY=.\{10,\}' .env 2>/dev/null; then
php artisan key:generate --force --ansi || true
fi
php artisan migrate --force --ansi
fi
exec "$@"