Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .env
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,6 @@ MAILER_NAME=images
###< symfony/sendgrid-mailer ###

###> Redis ###
REDIS_HOST=127.0.0.1
REDIS_HOST=redis
REDIS_PORT=6379
###< Redis ###
57 changes: 57 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
init: down-clear pull build-pull up app-init front-init
down: down-clear
check: lint analyze test

up:
docker compose up -d

down-clear:
docker compose down -v --remove-orphans

pull:
docker compose pull

build-pull:
docker compose build --pull

app-init: composer-install migrate fixtures-load

front-init: npm-install npm-build

migrate:
docker compose run --rm php-cli php bin/console d:m:m --no-interaction

fixtures-load:
docker compose run --rm php-cli php bin/console doctrine:fixtures:load --no-interaction

composer-install:
docker compose run --rm php-cli composer install

composer-autoload:
docker compose run --rm php-cli composer dump-autoload

composer-validate:
docker compose run --rm php-cli composer validate

analyze: phpstan deptrac

lint:
docker compose run --rm php-cli ./vendor/bin/php-cs-fixer fix --dry-run --allow-risky=yes --diff

cs-fix:
docker compose run --rm php-cli ./vendor/bin/php-cs-fixer fix --allow-risky=yes

phpstan:
docker compose run --rm php-cli composer phpstan

deptrac:
docker compose run --rm php-cli composer deptrac

test:
docker compose run --rm php-cli composer test

npm-install:
docker compose run --rm php-cli npm install

npm-build:
docker compose run --rm php-cli npm run build
39 changes: 39 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# Installing

Clone this project:

```shell
git clone git@github.com:cazak/images.git
```

Init project:

```shell
make init
```

Check `Makefile` for other commands

# Images

Project structure:
```
.
├── docker/ # Образы nginx, php-fpm, php-cli
├── src/ # PHP код приложения
.../
└── Model
└── Example
└── Application
└── Domain
└── Infrastructure
└── Test
.../
├── templates/ # Twig шаблоны
├── public/ # Публичные файлы (включая сборку фронтенда)
│ └── build/ # Сюда собирает Webpack Encore
├── assets/ # JS/CSS ресурсы
├── package.json # NPM конфигурация
├── composer.json # PHP зависимости
├── docker-compose.yml # Docker окружение
```
69 changes: 69 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
version: "3.9"

services:
nginx:
build:
context: docker/nginx
ports:
- "80:80"
volumes:
- ./:/app
depends_on:
- php-fpm
networks:
- symfony

php-fpm:
build:
context: docker/php-fpm
volumes:
- ./:/app
environment:
APP_ENV: dev
DATABASE_URL: "postgresql://symfony:symfony@db:5432/symfony?serverVersion=15"
REDIS_URL: "redis://redis:6379"
depends_on:
- db
- redis
networks:
- symfony

php-cli:
build:
context: docker/php-cli
volumes:
- ./:/app
- ~/.composer:/home/app/.composer
environment:
APP_ENV: dev
DATABASE_URL: "postgresql://symfony:symfony@db:5432/symfony?serverVersion=15"
REDIS_URL: "redis://redis:6379"
depends_on:
- db
- redis
networks:
- symfony

db:
image: postgres:15-alpine
environment:
POSTGRES_USER: symfony
POSTGRES_PASSWORD: symfony
POSTGRES_DB: symfony
ports:
- "5432:5432"
volumes:
- db_data:/var/lib/postgresql/data
networks:
- symfony

redis:
image: redis:7-alpine
networks:
- symfony

volumes:
db_data:

networks:
symfony:
5 changes: 5 additions & 0 deletions docker/nginx/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
FROM nginx:1.29.2-alpine

COPY ./conf.d /etc/nginx/conf.d

WORKDIR /app
21 changes: 21 additions & 0 deletions docker/nginx/conf.d/default.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
server {
listen 80;
server_name localhost;
charset utf-8;
index index.php;

root /app/public;

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

location ~ \.php$ {
fastcgi_pass php-fpm:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
23 changes: 23 additions & 0 deletions docker/php-cli/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
FROM php:8.1-cli-alpine

RUN mv "$PHP_INI_DIR/php.ini-development" "$PHP_INI_DIR/php.ini"
RUN echo 'memory_limit = 512M' >> /usr/local/etc/php/conf.d/custom.ini

RUN apk add --no-cache \
git unzip autoconf build-base \
nodejs npm \
libzip-dev icu-dev libpng-dev libjpeg-turbo-dev freetype-dev postgresql-dev \
imagemagick-dev \
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
&& docker-php-ext-install pdo pdo_pgsql intl zip gd opcache \
&& pecl install redis \
&& docker-php-ext-enable redis \
&& pecl install imagick \
&& docker-php-ext-enable imagick \
&& apk del autoconf build-base

RUN addgroup -g 1000 app && adduser -u 1000 -G app -s /bin/sh -D app
COPY --from=composer:2 /usr/bin/composer /usr/local/bin/composer

USER app
WORKDIR /app
21 changes: 21 additions & 0 deletions docker/php-fpm/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
FROM php:8.1-fpm-alpine

RUN apk add --no-cache \
git unzip \
libpng-dev libjpeg-turbo-dev freetype-dev \
libzip-dev icu-dev oniguruma-dev postgresql-dev \
imagemagick-dev \
autoconf make g++ \
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
&& docker-php-ext-install pdo pdo_pgsql intl opcache gd zip \
&& pecl install redis \
&& docker-php-ext-enable redis \
&& pecl install imagick \
&& docker-php-ext-enable imagick \
&& apk del autoconf make g++ \
&& mv "$PHP_INI_DIR/php.ini-development" "$PHP_INI_DIR/php.ini"

RUN addgroup -g 1000 app && adduser -u 1000 -G app -s /bin/sh -D app

USER app
WORKDIR /app
Loading
Loading