-
Notifications
You must be signed in to change notification settings - Fork 33
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
iu5git
authored and
iu5git
committed
Nov 24, 2024
1 parent
8ec8140
commit 45db30d
Showing
7 changed files
with
222 additions
and
51 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,170 @@ | ||
# Основы работы с Git и Docker Compose | ||
|
||
# Основы работы с git | ||
## Введение | ||
Git - система контроля версий, которая позволяет интегрировать потоки работы, выполненные несколькими участниками, в течение определенного времени. | ||
Важно, что не стоит путать git и `github`/`gitlab`/`bitbucket` и др. Все эти платформы представляют собой веб-службу размещения для репозиториев git. У `github` имеется свой процесс `workflow` который немного отличается от остальных. | ||
|
||
![github workflow](assets/hq720.jpg) | ||
|
||
Умение работать с git очень важно, т.к. это неотделимая часть каждого процесса разработки, которая позволяет организовывать flow работы. Поэтому ниже будут перечислены все основные команды, которые стоит знать, так как если они не пригодятся Вам в учебе, но при устройстве в любую компанию разработчиком, Вы будете их обязательно использовать. | ||
**Ниже будут перечислены команды для работы с git из терминала!** | ||
## Основные команды, которые стоит знать | ||
1. Инициализация и клонирование репозитория | ||
- `git init` - команда, которая позволяет инициализировать новый репозиторий или пересоздать уже существующий. | ||
Подробнее: https://git-scm.com/docs/git-init | ||
Клонирование репозитория. | ||
- `git clone <URL_ADDR>` - клонирование существующего репозитория, в параметр <URL_ADDR> необходимо передать адрес вашего репозитория, который находится на github. | ||
Пример: | ||
`git clone https://github.com/iu5git/Web` - склонируется репозиторий курса РИП из github. | ||
При выполнении этой команды у Вас склонируется репозиторий в текущую активную директорию, из которой Вы выполняли эту команду. | ||
Подробнее: https://git-scm.com/docs/git-clone | ||
2. Работа с ветками. | ||
- `git branch -m "Название ветки"` - создание новой ветки с названием, "Название ветки" - пример названия, Вы его можете заменить на любое другое и у Вас создастся ветка с этим названием. | ||
Пример: | ||
`git branch -m "Server Side Rendering"` - локально у вас создастся ветка с названием "Server Side Rendering" | ||
Подробнее: https://git-scm.com/docs/git-branch | ||
- `git push --set-upstream origin "Название ветки"` - "заливает" Вашу созданную ветку с названием "Название ветки" в репозиторий. | ||
Пример: | ||
`git push --set-upstream origin "Server Side Rendering"` - данная команда зальет ветку с названием "Server Side Rendering" в репозиторий. | ||
Подробнее: https://git-scm.com/docs/git-push | ||
- `git checkout "Название ветки"` - позволяет перейти к ветке с названием "Название ветки". | ||
Пример: | ||
`git checkout "Server Side Rendering"` - переместит Вас в ветку с названием "Server Side Rendering". | ||
Подробнее: https://git-scm.com/docs/git-checkout | ||
3. Работа с изменениями (Подробнее: https://git-scm.com/book/ru/v2/%D0%9F%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5-C:-%D0%9A%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D1%8B-Git-%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5-%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D1%8B). | ||
- `git add .` - добавляет изменение из рабочего каталога в раздел проиндексированных файлов. При наличии у Вас измененных файлов, перед commit'ом необходимо проиндексировать те файлы, которые Вы хотите залить в Ваш репозиторий, данная команда проиндексирует все Ваши файлы. | ||
- `git commit -m "Название коммита"` - команда делает снимок измененных проиндексированных файлов на данный момент времени с заданным названием. "Название коммита" - пример названия коммита. | ||
**Важно: каждый коммит должен содержать в себе не тарабарщину, а определенное название, чтобы человек, не знакомый с содержанием изменений, мог понять что происходит в данном коммите.** | ||
Пример хорошего коммита: | ||
`git commit -m "Connected Redis"` - из названия коммита понятно, что он содержит в себе изменения, связанные с добавлением подключением Redis'а. | ||
Пример плохого коммита: | ||
`git commit -m "Redis"` - Что Redis? Кто Redis? Явно видно, что были какие-то изменения, связанные с Redis'ом, а что с ним сделали - непонятно. | ||
Подробнее: https://git-scm.com/docs/git-commit | ||
- `git push` - команда заливает Ваши коммиты в репозиторий. | ||
Подробнее: https://git-scm.com/docs/git-push | ||
|
||
## Дополнительно | ||
Также есть достаточно удобный сайт для изучения git: https://learngitbranching.js.org/?locale=ru_RU , на ней можно изучить базовые основы работы с git'ом. | ||
|
||
|
||
# Документация по работе файла `docker-compose.yml` | ||
|
||
Этот [файл](/docker-compose.yml) конфигурации `docker-compose.yml` предназначен для запуска и настройки трех сервисов: базы данных PostgreSQL, хранилища объектов MinIO и кеша Redis. Ниже описаны детали каждого сервиса и его конфигурация. | ||
|
||
--- | ||
|
||
## Общая структура | ||
|
||
- **version**: Указана версия Docker Compose (в данном случае `"3.8"`). | ||
- **services**: Определяет три сервиса: | ||
- `db` (PostgreSQL) | ||
- `minio` (MinIO) | ||
- `redis` (Redis) | ||
- **volumes**: Настройки томов для сохранения данных сервисов. | ||
|
||
--- | ||
|
||
## Сервисы | ||
|
||
### 1. `db` (PostgreSQL) | ||
|
||
PostgreSQL используется как база данных. | ||
|
||
- **Имя образа**: `postgres:12` — скачивает и использует PostgreSQL версии 12. | ||
- **Порты**: | ||
- `5432:5432` — связывает порт 5432 контейнера с портом 5432 хоста. | ||
- **Переменные окружения**: | ||
- `POSTGRES_USER`: Задает имя пользователя базы данных (`root`). | ||
- `POSTGRES_DB`: Название создаваемой базы данных (`RIP`). | ||
- `POSTGRES_PASSWORD`: Пароль пользователя (`root`). | ||
- **Том**: | ||
- `postgresdb-data` монтируется в `/var/lib/postgresql/data` для хранения данных базы. | ||
|
||
--- | ||
|
||
### 2. `minio` (MinIO) | ||
|
||
MinIO предоставляет функциональность объектного хранилища. | ||
|
||
- **Имя образа**: `minio/minio:latest` — последняя версия MinIO. | ||
- **Порты**: | ||
- `9000:9000` — порт для API MinIO. | ||
- `9001:9001` — порт для консоли управления MinIO. | ||
- **Переменные окружения**: | ||
- `MINIO_ACCESS_KEY`: Устанавливает ключ доступа (`root`). | ||
- `MINIO_SECRET_KEY`: Устанавливает секретный ключ (`root`). | ||
- `MINIO_CONSOLE_ADDRESS`: Указывает адрес для консоли (`:9001`). | ||
- **Том**: | ||
- `minio-data` монтируется в `/data` для хранения объектов. | ||
- **Команда**: | ||
- `server /data` — запускает MinIO и указывает путь для хранения данных. | ||
|
||
--- | ||
|
||
### 3. `redis` (Redis) | ||
|
||
Redis используется как кеш-сервис. | ||
|
||
- **Имя образа**: `redis:6.2-alpine` — компактная версия Redis 6.2 на базе Alpine Linux. | ||
- **Порты**: | ||
- `6379:6379` — связывает порт 6379 контейнера с портом 6379 хоста. | ||
- **Переменные окружения**: Не используются напрямую, но настроен пароль. | ||
- **Команда**: | ||
- `redis-server --save 20 1 --loglevel warning --requirepass password` — конфигурирует Redis: | ||
- Сохраняет данные каждые 20 секунд при наличии хотя бы 1 изменения. | ||
- Логирование установлено на уровень предупреждений (`warning`). | ||
- Задает пароль для доступа (`password`). | ||
- **Том**: | ||
- `redis-data` монтируется в `/data` для сохранения данных. | ||
|
||
--- | ||
|
||
## Томы | ||
|
||
Для каждого сервиса предусмотрены отдельные тома для сохранения данных: | ||
|
||
- `postgresdb-data` — хранит данные PostgreSQL. | ||
- `minio-data` — хранит объекты MinIO. | ||
- `redis-data` — хранит данные Redis. | ||
|
||
### Настройки томов | ||
|
||
Все тома используют локальный драйвер: | ||
|
||
```yaml | ||
volumes: | ||
postgresdb-data: | ||
driver: local | ||
minio-data: | ||
driver: local | ||
redis-data: | ||
driver: local | ||
``` | ||
## Запуск | ||
Для того, чтобы запустить у вас локально данный контейнер, необходимо убедиться, что установлен Docker Desktop, так как через него удобнее следить за состоянием контейнеров и управлять ими. | ||
*Docker Desktop можно установить по ссылке: https://www.docker.com/products/docker-desktop/* | ||
После установки необходимо открыть терминал в директории, где находится `docker-compose.yml` и написать команду `docker-compose up -d`. | ||
|
||
В случае успешной сборки контейнера, в терминале увидите следующее: | ||
|
||
``` | ||
[+] Running 7/7 | ||
✔ Network downloads_default Created 0.2s | ||
✔ Volume "downloads_minio-data" Created 0.0s | ||
✔ Volume "downloads_redis-data" Created 0.0s | ||
✔ Volume "downloads_postgresdb-data" Created 0.0s | ||
✔ Container downloads-db-1 Started 1.9s | ||
✔ Container downloads-redis-1 Started 1.8s | ||
✔ Container minio Started 1.9s | ||
``` | ||
|
||
А в Docker Desktop появится 3 контейнера, в которые будут гореть зеленым цветом. | ||
|
||
![Скриншот корректно запущенного контейнера](assets/launched-compose.png) | ||
|
||
После этого можно подключать ваше приложение к БД, MinIO и Redis, запущенным в контейнере. |
File renamed without changes
File renamed without changes
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
version: "3.8" # версия вашего docker-compose | ||
services: | ||
# имеджи, которые запустятся по вашему желанию | ||
db: | ||
# название моего имеджа | ||
image: postgres:12 # скачает image postgres 12 версии | ||
volumes: | ||
# часть настроек для хранения данных, пока для нас это не важно | ||
- type: volume | ||
source: postgresdb-data | ||
target: /var/lib/postgresql/data | ||
ports: | ||
# порты | ||
- "5432:5432" | ||
environment: | ||
# переменные окружения, меняйте их если хотите поменять пароль, логин или название стартовой базы данных | ||
POSTGRES_USER: root | ||
POSTGRES_DB: RIP | ||
POSTGRES_PASSWORD: root | ||
minio: | ||
container_name: minio | ||
image: minio/minio:latest | ||
ports: | ||
- "9000:9000" | ||
- "9001:9001" | ||
environment: | ||
MINIO_ACCESS_KEY: root | ||
MINIO_SECRET_KEY: root | ||
MINIO_CONSOLE_ADDRESS: ":9001" | ||
volumes: | ||
- minio-data:/data | ||
command: server /data | ||
redis: | ||
image: redis:6.2-alpine | ||
restart: always | ||
ports: | ||
- '6379:6379' | ||
command: redis-server --save 20 1 --loglevel warning --requirepass password | ||
volumes: | ||
- redis-data:/data | ||
|
||
volumes: | ||
# часть настроек для хранения данных | ||
postgresdb-data: | ||
driver: local | ||
minio-data: | ||
driver: local | ||
redis-data: | ||
driver: local |
Oops, something went wrong.