Project

General

Profile

Docker+Swarm » History » Version 2

Dmitry Vasilev, 12/01/2025 02:35 PM

1 1 Dmitry Vasilev
# Описание реализации docker + swarm на примере основного сервиса "api"
2
3
## Сборка swarm образов для микросервиса "api"
4
5
```shell
6
cd api
7
docker build -t api-app:latest -f docker/php/Dockerfile .
8
docker build -t api-nginx:latest -f docker/nginx/Dockerfile .
9
```
10
11
### Запуск сервиса на локальной системе
12
```shell
13
export DOCKER_NAME=fluir
14
15
docker stack deploy -c api-stack.local.yaml fluir_api
16
```
17
18
### Запуск сервиса на prod системе
19
20
```shell
21
export DOCKER_NAME=fluir
22
23
docker stack deploy -c api-stack.prod.yaml fluir_api
24
```
25
26
---
27
28
### Вход в контейнер
29 2 Dmitry Vasilev
30
Смотрим какие сервисы запущены и видим, что-типа 
31
```shell
32
docker ps
33
34
f9bdf5c420a9   redis:alpine                 "docker-entrypoint.s…"   4 days ago   Up 4 days   6379/tcp              fluir_api_redis.1.g4dgki53bzg9706cr9ovwizze
35
6ca234e7aa09   api-app:8.3-swoole           "docker-entrypoint.s…"   4 days ago   Up 4 days   9000/tcp              fluir_api_reverb.1.olz5ieevcx0l77w8vrdugpnkp
36
5afffe0a518e   api-nginx:latest             "/docker-entrypoint.…"   4 days ago   Up 4 days   80/tcp                fluir_api_nginx.1.4jkamx5g1nmwzuj4ja2sv84o4
37
7f65a388c14a   api-app:8.3-swoole           "docker-entrypoint.sh"   4 days ago   Up 4 days   9000/tcp              fluir_api_app.1.zfpkflrfhngxfdk40s007kkuo
38
7443eac605df   traefik:v2.10                "/entrypoint.sh --pr…"   4 days ago   Up 4 days   80/tcp                fluir_api_traefik.1.r4seahn85hvgy9ybdpx613769
39
5e0d8f12f1aa   postgres:16-alpine           "docker-entrypoint.s…"   4 days ago   Up 4 days   5432/tcp              fluir_api_postgres.1.calxjb5tqodw3kounkssdj8mm
40
```
41
42 1 Dmitry Vasilev
###
43
```shell
44
docker exec -it $(docker ps -qf "name=fluir_api_app.1") sh
45
```
46
47 2 Dmitry Vasilev
Например, чтобы зайти в сервис payments, нужно выполнить
48
49
```shell
50
docker exec -it $(docker ps -qf "name=fluir_api_payments.1") sh
51
```
52
53
---
54
55 1 Dmitry Vasilev
Внутри контейнера можно выполнять стандартные команды
56
57
```shell
58
php artisan migrate
59
60
php artisan db:seed --class=Database\\Seeders\\RolesSeeder --force
61
php artisan db:seed --class=Database\\Seeders\\DatabaseSeeder --force
62
```
63
64
--- 
65 2 Dmitry Vasilev
---
66
---
67 1 Dmitry Vasilev
68
Сейчас данные действия проводить не нужно, это делается когда проект поднимается на сервере или локально первый раз.
69
70
## Список команд для Docker и Swarm для сети fluir:
71
72
**Инициализация swarm**
73
```shell
74
docker swarm init # если ещё не выполнено локально
75
docker swarm init --advertise-addr 46.101.125.135 # если ещё не выполнено на сервере
76
```
77
78
**Создаем сеть fluir**
79
80
```shell
81
docker network create --driver overlay --attachable fluir
82
```
83
84
**Проверяем наличие сети**
85
```shell
86
docker network ls
87
```
88
89
**Удалить сеть**
90
```shell
91
docker network rm fluir
92
```
93
94
**Детальная информация о сети**
95
```shell
96
docker network inspect fluir
97
```
98
99
---
100
101
**Перезапуск**
102
```shell
103
docker service update --force fluir_admin_admin
104
```
105
106
**Останов сервисов**
107
108
```shell
109
docker stack rm fluir_profiles
110
docker stack rm fluir_payments
111
docker stack rm fluir_orders
112
docker stack rm fluir_notifications
113
docker stack rm fluir_contents
114
docker stack rm fluir_chats
115
docker stack rm fluir_kyc
116
docker stack rm fluir_authentication
117
docker stack rm fluir_webview
118
docker stack rm fluir_admin
119
docker stack rm fluir_api
120
docker stack rm fluir_redmine
121
```
122
123
**Запуск сервиса api** (см. файл /home/fluir/project/start_services.sh)
124
```shell
125
cd api
126
docker stack deploy -c api-stack.prod.yaml fluir_api
127
```
128
129
### Веб интерфейс Traefik (он работает только для мониторинга)
130
131
https://traefik.fluir.us/dashboard/#/
132
login: fluir
133
pass: baf22ddb