# Docker — Операции с проектами

Эта страница описывает базовые операции по управлению Docker-проектами на сервере: организацию директорий, работу с файлами проектов, изменение прав доступа и создание резервных копий. Материал рассчитан на начинающих и помогает понять, **как правильно хранить и обслуживать несколько Docker-проектов на одном сервере**, что особенно актуально для веб-студий и хостинга клиентских проектов.

---

# Типичная структура проектов на сервере

На серверах с несколькими сайтами или сервисами Docker-проекты обычно размещаются в одной общей директории.

Пример структуры:

```
/opt/flamy_projects
```

Внутри неё располагаются отдельные проекты:

```
/opt/flamy_projects
│
├─ site1
│  ├─ docker-compose.yml
│  ├─ .env
│  ├─ Dockerfile
│  └─ src
│
├─ site2
│  ├─ docker-compose.yml
│  └─ src
│
└─ api_service
   ├─ docker-compose.yml
   └─ app
```

Каждый каталог — это **отдельный Docker Compose проект**.

---

# Переход в директорию проекта

Перед выполнением большинства Docker-команд необходимо перейти в директорию проекта.

```bash
cd /opt/flamy_projects
```

Просмотреть содержимое папки:

```bash
ls -la
```

### Когда используется

Эта команда помогает:

* убедиться, что вы работаете в нужной директории
* увидеть список проектов
* проверить наличие файлов конфигурации

---

# Поиск docker-compose файлов

Иногда на сервере много проектов, и нужно найти все compose-файлы.

```bash
find /opt/flamy_projects -type f -name "docker-compose*.yml"
```

Эта команда покажет:

* все `docker-compose.yml`
* дополнительные файлы вроде `docker-compose.prod.yml`

Пример результата:

```
/opt/flamy_projects/site1/docker-compose.yml
/opt/flamy_projects/site2/docker-compose.yml
/opt/flamy_projects/api_service/docker-compose.yml
```

### Когда полезно

* аудит серверов
* поиск старых проектов
* диагностика конфигураций

---

# Проверка файлов проекта

Перед запуском проекта полезно проверить содержимое директории.

```bash
ls -la
```

Пример:

```
docker-compose.yml
.env
Dockerfile
src/
logs/
```

### Что важно проверить

* наличие `docker-compose.yml`
* наличие `.env` файла
* наличие исходного кода

Если файл `docker-compose.yml` отсутствует — проект запустить не получится.

---

# Изменение владельца файлов

Иногда файлы проекта принадлежат неправильному пользователю.
Это может происходить, если:

* проект копировали через `root`
* архив был распакован другим пользователем
* файлы были перенесены с другого сервера

Исправить владельца можно так:

```bash
sudo chown -R Crimson:Crimson /opt/flamy_projects
```

### Что означает команда

| Часть           | Значение                   |
| --------------- | -------------------------- |
| chown           | изменить владельца         |
| -R              | рекурсивно для всех файлов |
| Crimson:Crimson | пользователь и группа      |

---

# Назначение текущего пользователя владельцем

Иногда проще назначить владельцем текущего пользователя.

```bash
sudo chown -R $(id -u):$(id -g) /opt/flamy_projects
```

### Что делают параметры

| Команда | Значение                 |
| ------- | ------------------------ |
| `id -u` | ID текущего пользователя |
| `id -g` | ID текущей группы        |

Это позволяет быстро исправить проблемы с правами.

---

# Изменение прав доступа

Иногда Docker или приложение не может читать файлы из-за неправильных прав.

Исправить можно так:

```bash
sudo chmod -R 755 /opt/flamy_projects
```

### Что означает 755

| Право | Значение                   |
| ----- | -------------------------- |
| 7     | чтение, запись, выполнение |
| 5     | чтение и выполнение        |
| 5     | чтение и выполнение        |

В итоге:

* владелец может изменять файлы
* остальные пользователи могут читать и выполнять

> **Важно:**
> Не стоит использовать `777`, так как это даёт полный доступ всем пользователям и может быть небезопасно.

---

# Резервное копирование проектов

Регулярное резервное копирование помогает защититься от:

* ошибок обновления
* повреждения данных
* случайного удаления файлов

---

# Архивирование проекта

Создать архив можно с помощью `tar`.

```bash
tar -czf flamy_projects_backup_$(date +%Y%m%d).tar.gz /opt/flamy_projects
```

### Что делает команда

| Часть | Значение                 |
| ----- | ------------------------ |
| tar   | инструмент архивирования |
| -c    | создать архив            |
| -z    | сжать через gzip         |
| -f    | имя файла                |

Файл будет иметь имя вроде:

```
flamy_projects_backup_20260311.tar.gz
```

---

# Резервное копирование через rsync

`rsync` позволяет копировать файлы между серверами или папками.

```bash
rsync -avz /opt/flamy_projects/ backup_location/
```

### Что означают параметры

| Параметр | Назначение      |
| -------- | --------------- |
| -a       | архивный режим  |
| -v       | подробный вывод |
| -z       | сжатие данных   |

---

# Пример копирования на другой сервер

```bash
rsync -avz /opt/flamy_projects user@backup-server:/backup/docker_projects
```

Это часто используется для:

* ежедневных backup
* синхронизации серверов
* миграции проектов

---

# Проверка размера проекта

Иногда полезно узнать размер проекта.

```bash
du -sh /opt/flamy_projects/*
```

Пример вывода:

```
1.2G site1
850M site2
430M api_service
```

Это помогает определить:

* какие проекты занимают больше всего места
* где могут находиться большие логи или кэш

---

# Проверка логов проекта

Некоторые проекты сохраняют логи внутри директории.

Например:

```
logs/
storage/logs
var/log
```

Посмотреть последние строки:

```bash
tail -n 100 logs/app.log
```

---

# Типичный рабочий процесс

Обычно работа с проектом выглядит так:

### 1 Перейти в директорию проекта

```bash
cd /opt/flamy_projects/site1
```

---

### 2 Проверить файлы

```bash
ls -la
```

---

### 3 Запустить контейнеры

```bash
docker compose up -d
```

---

### 4 Проверить контейнеры

```bash
docker compose ps
```

---

### 5 Проверить логи

```bash
docker compose logs --tail=50
```

---

# Работа с несколькими проектами

На сервере может быть десятки проектов.

Чтобы понять, какие контейнеры запущены:

```bash
docker ps
```

Можно увидеть:

```
site1_nginx
site2_php
api_service_db
```

Это помогает быстро определить, какие проекты работают.

---

# Полезные советы

## Храните проекты в одной директории

Это упрощает:

* резервное копирование
* администрирование
* поиск конфигураций

---

## Используйте `.env` файлы

В `.env` удобно хранить:

* пароли
* порты
* настройки окружения

---

## Делайте регулярные backup

Минимум раз в день для production-серверов.

---

# Краткая памятка

```bash
cd /opt/flamy_projects                    # перейти в директорию проектов
ls -la                                    # список файлов

find /opt/flamy_projects -name "docker-compose*.yml"  # найти compose файлы

sudo chown -R user:user /opt/flamy_projects  # изменить владельца
sudo chmod -R 755 /opt/flamy_projects        # изменить права

tar -czf backup_$(date +%Y%m%d).tar.gz /opt/flamy_projects  # архив проекта

rsync -avz /opt/flamy_projects/ backup/      # резервная копия

du -sh /opt/flamy_projects/*                 # размер проектов
```