# Prepare

Copy all example files and dir

Cop and set your username:
`.env.example`

Choose php version and redis needed redis containers
`docker-compose.yml.example`

`dockerfiles/workspace/crontab-example`

`dockerfiles/workspace/aliases.sh.example`

Set your site(s) root-mappings
`config/nginx/conf.d/vhosts.conf.example`

## First
Create alias for `docker-compose` command.

`echo 'alias dc="docker-compose"' >> ~/.bash_aliases`

Also, you have might be needed include `~/.bash_aliases` in your `~/.bashrc` file.

Build all

`dc build`

## Second

Create usefully symlinks

`./create-symlinks.sh`

## Get composer auth token

If you do not have composer github auth.json file in `~/.composer` dir. You will need launch the helper-script:

`./get-composer-auth.sh`

## Before use and launch

You need copy `vhosts.conf.example` and edit this file - remove unused roots (or change to existing dirs).
Setup correctly nginx config.

You ready for up containers.

`dc up -d`

## Database dumps

Database dumps must be placement on `./hostfiles` directory.

## Bash scripts

After execute created symlinks, you have some enter-points for vulnerable popular tasks.

### Xdebug
For start debugging in php-fpm, also in workspace

`./xdebug-start.sh [74|81]` - `74` by default

For start debugging in php-fpm, also in workspace

`./xdebug-stop.sh` or `./stop-xdebug.sh 81` if you launch start new php version 81

#### Xdebug with profiler

Profiler saved your profiles into `/tmp` directory in own container.

In docker-compose.base.yml exists volume that represent `/tmp` directory to `./data/profiler`.
In this case `./data/profiler` must be have `777` chmod`s.

For starting xdebug with profiler enable you might:

`./xdebug-start.sh 74 1`

Or

`./xdebug-start.sh 74 profiler` if you like

Second argument must be have any string

For disable profiler - just simple launch

`./xdebug-quit.sh`


### Mysql

For import dumps from `hostfiles` directory you might be enter to mysql console:

`./mysql.sh`

Change you needed database and source to the `*.sql` dump.

`use mydatabase`

`source /hostfiles/mydatabase.sql`

Dump must be extracted before source in mysql-cli

### MariaDB MCP (Cursor IDE)

Optional MCP server so Cursor can query the `db` container over the Docker network (SSE on localhost).

1. Start your stack so the `db` service is running (`dc up -d` or your usual compose files).
2. Find the Docker network name that `db` uses: `docker network ls` (often `<project-folder>_default`). Set `INTAI_DOCKER_NETWORK` in `.env` (see `.env.example`).
3. Copy `.env.mcp-mariadb.example` to `.env.mcp-mariadb` and set `DB_PASSWORD` (and optional `DB_NAME`) to match `MYSQL_ROOT_PASSWORD` / your database.
4. Build and start the MCP container: `docker compose -f docker-compose.mcp-mariadb.yml.example up -d --build`
5. Ensure `.cursor/mcp.json` uses the same host port as `MCP_MARIADB_PORT` in `.env` (default `8765`, URL path `/sse`).
6. Restart Cursor and enable the **intai-mariadb** MCP server in MCP settings.

First image build can take a while (upstream MariaDB MCP dependencies).

### Workspace

For execute composer update|install or nodejs operations, also yarn, npm and all node-builds.
You might use `workspace`-container

For the enter to workspace container with php 7.4 you need launch usefully helper script in your home directory:

`./enter-to-workspace.sh`

For enter to `workspace` with php7.3 you need pass `73` container name suffix

`./enter-to-workspace.sh 73`

### Nginx

For restart `nginx` after some changes in nginx configuration, you might:

`./restart-nginx.sh`

### Elastic

Copy example

Launch:

`dc -f docker-compose.elastic.yml up -d elastic`

## Src build need DOCKER_BUILDKIT

If you want build own workspace image. You need export environment variable

`export DOCKER_BUILDKIT=1`

more info https://github.com/edrevo/dockerfile-plus

Build may fail without this
`export COMPOSE_PARALLEL_LIMIT=1`
