Project

General

Profile

Docker+Swarm » History » Version 3

Dmitry Vasilev, 12/01/2025 02:36 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 3 Dmitry Vasilev
**Входим в контейнер api** 
44 1 Dmitry Vasilev
```shell
45
docker exec -it $(docker ps -qf "name=fluir_api_app.1") sh
46
```
47
48 2 Dmitry Vasilev
Например, чтобы зайти в сервис payments, нужно выполнить
49
50
```shell
51
docker exec -it $(docker ps -qf "name=fluir_api_payments.1") sh
52
```
53
54
---
55
56 1 Dmitry Vasilev
Внутри контейнера можно выполнять стандартные команды
57
58
```shell
59
php artisan migrate
60
61
php artisan db:seed --class=Database\\Seeders\\RolesSeeder --force
62
php artisan db:seed --class=Database\\Seeders\\DatabaseSeeder --force
63
```
64
65
--- 
66 2 Dmitry Vasilev
---
67
---
68 1 Dmitry Vasilev
69
Сейчас данные действия проводить не нужно, это делается когда проект поднимается на сервере или локально первый раз.
70
71
## Список команд для Docker и Swarm для сети fluir:
72
73
**Инициализация swarm**
74
```shell
75
docker swarm init # если ещё не выполнено локально
76
docker swarm init --advertise-addr 46.101.125.135 # если ещё не выполнено на сервере
77
```
78
79
**Создаем сеть fluir**
80
81
```shell
82
docker network create --driver overlay --attachable fluir
83
```
84
85
**Проверяем наличие сети**
86
```shell
87
docker network ls
88
```
89
90
**Удалить сеть**
91
```shell
92
docker network rm fluir
93
```
94
95
**Детальная информация о сети**
96
```shell
97
docker network inspect fluir
98
```
99
100
---
101
102
**Перезапуск**
103
```shell
104
docker service update --force fluir_admin_admin
105
```
106
107
**Останов сервисов**
108
109
```shell
110
docker stack rm fluir_profiles
111
docker stack rm fluir_payments
112
docker stack rm fluir_orders
113
docker stack rm fluir_notifications
114
docker stack rm fluir_contents
115
docker stack rm fluir_chats
116
docker stack rm fluir_kyc
117
docker stack rm fluir_authentication
118
docker stack rm fluir_webview
119
docker stack rm fluir_admin
120
docker stack rm fluir_api
121
docker stack rm fluir_redmine
122
```
123
124
**Запуск сервиса api** (см. файл /home/fluir/project/start_services.sh)
125
```shell
126
cd api
127
docker stack deploy -c api-stack.prod.yaml fluir_api
128
```
129
130
### Веб интерфейс Traefik (он работает только для мониторинга)
131
132
https://traefik.fluir.us/dashboard/#/
133
login: fluir
134
pass: baf22ddb