An open API service indexing awesome lists of open source software.

https://github.com/viacheslav1998/lara-bridge-api

APi, laravel, use an intermediary for any application. DDD, Queue, AutoTest
https://github.com/viacheslav1998/lara-bridge-api

api architecture autotest ddd-example feature interation-tests queues tests unitt

Last synced: about 2 months ago
JSON representation

APi, laravel, use an intermediary for any application. DDD, Queue, AutoTest

Awesome Lists containing this project

README

          

# 🚀 Laravel + PostgreSQL + PHP + Nginx — Docker Compose Setup

> Готовая инфраструктура для быстрого запуска Laravel-приложения в Docker с Nginx и PostgreSQL.
> Идеально подходит для разработки и продакшн-деплоя.

---

## 🧱 Стек технологий
```
| Компонент | Описание |
|----------------|-----------|
| 🐘 **PHP / Laravel** | Фреймворк для разработки мощных backend-приложений |
| 🐳 **Docker Compose** | Контейнеризация и оркестрация |
| 🌐 **Nginx** | Веб-сервер и реверс-прокси |
| 🐘 **PostgreSQL** | Основная реляционная база данных |
| 🧰 **Composer** | Управление зависимостями PHP |
```
---

### 📂 Структура проекта
```
├── docker-compose.yml
├── nginx/
│ └── default.conf
├── laravel/
│ ├── app/
│ ├── bootstrap/
│ ├── config/
│ └── ...
├── php/
├──── Dockerfile
└── .env
├──docker-compose.yml
```
---

### NGINX - запиши в него (в директории)
```
server {
listen 80;
index index.php index.html;
server_name localhost;
root /var/www/public; // для windows root /var/www/html/public;

location / {
try_files $uri $uri/ /index.php?$query_string;
}

location ~ \.php$ {
include fastcgi_params;
fastcgi_pass app:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}

location ~ /\.ht {
deny all;
}
}
```
---
### PHP - запиши в него (в директории)
```
FROM php:8.2-fpm

# install setup dependences
RUN apt-get update && apt-get install -y \
git unzip libpng-dev libonig-dev libxml2-dev zip curl libpq-dev \
&& docker-php-ext-install pdo_pgsql mbstring exif pcntl bcmath gd

# install Composer
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer

WORKDIR /var/www
```

###🐳 Полезные команды Docker Compose
```

| Команда | Описание |
|----------|-----------|
| `docker-compose up -d --build ` | Запустить проект |
| `docker-compose down` | Остановить и удалить контейнеры |
| `docker-compose exec app php artisan migrate` | Применить миграции |
| `docker-compose exec app php artisan tinker` | Открыть консоль Laravel |
| `docker-compose logs -f` | Просмотр логов в реальном времени |

```

---

## ⚙️ Настройка и запуск

## Инструкция
1️⃣ Клонируйте репозиторий
```
bash
git clone https://github.com/Viacheslav1998/lara-bridge-api.git
cd laravel

2️⃣ Создайте .env файл
Пример содержимого .env:
APP_NAME=Laravel
APP_ENV=local
APP_KEY=генерируй свой
APP_DEBUG=true
APP_URL=http://localhost:8080

APP_LOCALE=en
APP_FALLBACK_LOCALE=en
APP_FAKER_LOCALE=en_US

APP_MAINTENANCE_DRIVER=file
# APP_MAINTENANCE_STORE=database

PHP_CLI_SERVER_WORKERS=4

BCRYPT_ROUNDS=12

LOG_CHANNEL=stack
LOG_STACK=single
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug

DB_CONNECTION=pgsql
DB_HOST=postgres
DB_PORT=5432
DB_DATABASE=laravel
DB_USERNAME=laravel
DB_PASSWORD=laravel

SESSION_DRIVER=database
SESSION_LIFETIME=120
SESSION_ENCRYPT=false
SESSION_PATH=/
SESSION_DOMAIN=null

BROADCAST_CONNECTION=log
FILESYSTEM_DISK=local
QUEUE_CONNECTION=database

CACHE_STORE=database
# CACHE_PREFIX=

MEMCACHED_HOST=127.0.0.1

REDIS_CLIENT=phpredis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_MAILER=log
MAIL_SCHEME=null
MAIL_HOST=127.0.0.1
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_FROM_ADDRESS="hello@example.com"
MAIL_FROM_NAME="${APP_NAME}"

AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
AWS_USE_PATH_STYLE_ENDPOINT=false

VITE_APP_NAME="${APP_NAME}"

3️⃣ Запустите контейнеры
docker-compose up -d --build

windows
winpty docker exec -it lara_bridge_app bash
composer install
composer update

Linux
docker exec -it lara_bridge_app bash
composer install
composer update

И Сгенерируйте ключ приложения
php artisan key:generate

дать права доступа
1 - cd laravel
2 - sudo chmod -R 777 storage bootstrap/cache

Миграции не забудь иначе ошибка будет 500
docker exec -it lara_bridge_app bash
php artisan migrate

не забудь сразу и сиды
php artisan db:seed

```

### 🐳 docker-compose.yaml (для windows поменяй ./laravel:/var/www/ на ./laravel:/var/www/html)
```
services:
app:
build:
context: ./php
container_name: lara_bridge_app
working_dir: /var/www
volumes:
- ./laravel:/var/www
networks:
- lara_bridge_net

nginx:
image: nginx:latest
ports:
- "8080:80"
volumes:
- ./laravel:/var/www
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
depends_on:
- app
networks:
- lara_bridge_net

postgres:
image: postgres:15
restart: unless-stopped
environment:
POSTGRES_USER: laravel
POSTGRES_PASSWORD: laravel
POSTGRES_DB: laravel
ports:
- "5433:5432"
volumes:
- lara_bridge_pgdata:/var/lib/postgresql/data
networks:
- lara_bridge_net

pgadmin:
image: dpage/pgadmin4
environment:
PGADMIN_DEFAULT_EMAIL: admin@local.dev
PGADMIN_DEFAULT_PASSWORD: admin
ports:
- "5050:80"
networks:
- lara_bridge_net

networks:
lara_bridge_net:

volumes:
lara_bridge_pgdata:

```

### 🧐✨ Fixer
```
Установлен PHP-CS-Fixer
проверка ошибок/стиля кода:
для этого нужно cd laravel там запускать:

// что бы проверить
php ./php-cs-fixer fix --dry-run --diff

// используем для исправления - если не работает git push
php ./php-cs-fixer fix
```

### 🤓📝💯 Тестирование
```
Тестирование тут тоже есть
разделены логично по директориям:
Unit
Feature
Integration

все просто
[запуск через Docker]

запуск php artisan test - запустят все тесты [что может привести к конфликту остальные тесты - поэтому запускай отдельно]

unit tests - php artisan test tests/Unit
Feature tests - php artisan test tests/Feature
Integration test - php artisan test tests/Integration
или
./vendor/bin/phpunit tests/Integration/Domain/Repository/[fileTest.php]
```