compose project
This commit is contained in:
8
.env
Normal file
8
.env
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
# Domeny
|
||||||
|
DOMAIN=helpdesk.local.example.com
|
||||||
|
|
||||||
|
# Baza danych
|
||||||
|
MYSQL_ROOT_PASSWORD=rootpass123
|
||||||
|
MYSQL_DATABASE=helpdesk
|
||||||
|
MYSQL_USER=helpdesk
|
||||||
|
MYSQL_PASSWORD=helpdesk123
|
||||||
55
Dockerfile
Normal file
55
Dockerfile
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
FROM php:8.4-fpm-alpine
|
||||||
|
|
||||||
|
LABEL maintainer="Kacper Żbikowski <mail@kzbikowski.pl>"
|
||||||
|
|
||||||
|
# Ustawienia środowiska
|
||||||
|
ENV DEBIAN_FRONTEND=noninteractive
|
||||||
|
|
||||||
|
# Aktualizacja systemu i instalacja zależności systemowych
|
||||||
|
RUN apt-get update && apt-get install -y \
|
||||||
|
libldap2-dev \
|
||||||
|
libpq-dev \
|
||||||
|
libzip-dev \
|
||||||
|
libpng-dev \
|
||||||
|
libjpeg-dev \
|
||||||
|
libfreetype6-dev \
|
||||||
|
libicu-dev \
|
||||||
|
libonig-dev \
|
||||||
|
sendmail \
|
||||||
|
git \
|
||||||
|
unzip \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
# Konfiguracja i instalacja rozszerzeń PHP
|
||||||
|
RUN docker-php-ext-configure ldap --with-ldap=/usr \
|
||||||
|
&& docker-php-ext-install ldap pdo pdo_mysql pdo_pgsql intl mbstring zip gd
|
||||||
|
|
||||||
|
# Instalacja Composer’a (globalnie)
|
||||||
|
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer
|
||||||
|
|
||||||
|
# Instalacja PHPMailer (lub innego mailera) – globalnie
|
||||||
|
RUN composer global require phpmailer/phpmailer
|
||||||
|
|
||||||
|
# Dodanie ścieżki do Composer bin do PATH
|
||||||
|
ENV PATH="/root/.composer/vendor/bin:${PATH}"
|
||||||
|
|
||||||
|
# Skopiowanie plików aplikacji
|
||||||
|
WORKDIR /var/www/html
|
||||||
|
COPY . /var/www/html
|
||||||
|
|
||||||
|
# Uprawnienia (dla PHP-FPM)
|
||||||
|
RUN chown -R www-data:www-data /var/www/html
|
||||||
|
|
||||||
|
# Opcjonalne ustawienia PHP (uploady, timezone itd.)
|
||||||
|
RUN { \
|
||||||
|
echo "upload_max_filesize=20M"; \
|
||||||
|
echo "post_max_size=25M"; \
|
||||||
|
echo "memory_limit=512M"; \
|
||||||
|
echo "date.timezone=Europe/Warsaw"; \
|
||||||
|
} > /usr/local/etc/php/conf.d/custom.ini
|
||||||
|
|
||||||
|
# Ekspozycja portu PHP-FPM
|
||||||
|
EXPOSE 9000
|
||||||
|
|
||||||
|
# Uruchomienie procesu PHP-FPM
|
||||||
|
CMD ["php-fpm"]
|
||||||
@@ -201,8 +201,4 @@ Route::prefix('api/v1')->group(function(){
|
|||||||
|
|
||||||
* Wygenerować gotowy plik routingu `routes/web.php` dla Laravel/Lumen.
|
* Wygenerować gotowy plik routingu `routes/web.php` dla Laravel/Lumen.
|
||||||
* Przygotować specyfikację API (OpenAPI/Swagger) dla `api/v1`.
|
* Przygotować specyfikację API (OpenAPI/Swagger) dla `api/v1`.
|
||||||
* Wygenerować przykładowe kontrolery i middleware skeletony.
|
* Wygenerować przykładowe kontrolery i middleware skeletony.
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
Jeżeli chcesz, w następnym kroku wygeneruję konkretną implementację routingu dla wybranego frameworka (np. Laravel, Slim, Symfony).
|
|
||||||
55
compose.yaml
Normal file
55
compose.yaml
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
version: "3.9"
|
||||||
|
|
||||||
|
services:
|
||||||
|
mariadb:
|
||||||
|
image: mariadb
|
||||||
|
container_name: helpdesk-db
|
||||||
|
env_file:
|
||||||
|
- .env
|
||||||
|
volumes:
|
||||||
|
- ./mariadb:/var/lib/mysql
|
||||||
|
- ./initdb:/docker-entrypoint-initdb.d
|
||||||
|
networks:
|
||||||
|
- internal
|
||||||
|
restart: unless-stopped
|
||||||
|
labels:
|
||||||
|
- com.centurylinklabs.watchtower.enable=true
|
||||||
|
|
||||||
|
nginx:
|
||||||
|
image: nginx:stable-alpine
|
||||||
|
container_name: helpdesk-nginx
|
||||||
|
depends_on:
|
||||||
|
- php
|
||||||
|
volumes:
|
||||||
|
- ./nginx/conf.d:/etc/nginx/conf.d
|
||||||
|
- ./src:/var/www/html
|
||||||
|
networks:
|
||||||
|
- internal
|
||||||
|
- traefik_proxy
|
||||||
|
labels:
|
||||||
|
- traefik.enable=true
|
||||||
|
- traefik.docker.network=traefik_public
|
||||||
|
- traefik.http.routers.helpdesk.rule=Host(`${DOMAIN}`)
|
||||||
|
- traefik.http.routers.helpdesk.entrypoints=websecure
|
||||||
|
- traefik.http.routers.helpdesk.tls=true
|
||||||
|
- traefik.http.routers.helpdesk.tls.certresolver=tls-resolver
|
||||||
|
- com.centurylinklabs.watchtower.enable=true
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
php:
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
container_name: helpdesk-php
|
||||||
|
env_file:
|
||||||
|
- .env
|
||||||
|
volumes:
|
||||||
|
- ./src:/var/www/html
|
||||||
|
networks:
|
||||||
|
- internal
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
networks:
|
||||||
|
internal:
|
||||||
|
traefik_proxy:
|
||||||
|
external: true
|
||||||
0
initdb/001_create_tables.sql
Normal file
0
initdb/001_create_tables.sql
Normal file
0
initdb/002_insert_defaults.sql
Normal file
0
initdb/002_insert_defaults.sql
Normal file
2
initdb/003_custom_init.sh
Normal file
2
initdb/003_custom_init.sh
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
echo ">>> Wykonuję dodatkową inicjalizację..."
|
||||||
22
nginx/conf.d
Normal file
22
nginx/conf.d
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
server_name _;
|
||||||
|
|
||||||
|
root /var/www/html/public;
|
||||||
|
index index.php index.html;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
try_files $uri /index.php?$query_string;
|
||||||
|
}
|
||||||
|
|
||||||
|
location ~ \\.php$ {
|
||||||
|
include fastcgi_params;
|
||||||
|
fastcgi_pass php:9000;
|
||||||
|
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||||
|
fastcgi_index index.php;
|
||||||
|
}
|
||||||
|
|
||||||
|
location ~ /\\.ht {
|
||||||
|
deny all;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user