Project

General

Profile

Docker+Swarm » History » Revision 2

Revision 1 (Dmitry Vasilev, 12/01/2025 02:32 PM) → Revision 2/3 (Dmitry Vasilev, 12/01/2025 02:35 PM)

# Описание реализации docker + swarm на примере основного сервиса "api" 

 ## Сборка swarm образов для микросервиса "api" 

 ```shell 
 cd api 
 docker build -t api-app:latest -f docker/php/Dockerfile . 
 docker build -t api-nginx:latest -f docker/nginx/Dockerfile . 
 ``` 

 ### Запуск сервиса на локальной системе 
 ```shell 
 export DOCKER_NAME=fluir 

 docker stack deploy -c api-stack.local.yaml fluir_api 
 ``` 

 ### Запуск сервиса на prod системе 

 ```shell 
 export DOCKER_NAME=fluir 

 docker stack deploy -c api-stack.prod.yaml fluir_api 
 ``` 

 --- 

 ### Вход в контейнер 

 Смотрим какие сервисы запущены и видим, что-типа  
 ```shell 
 docker ps 

 f9bdf5c420a9     redis:alpine                   "docker-entrypoint.s…"     4 days ago     Up 4 days     6379/tcp                fluir_api_redis.1.g4dgki53bzg9706cr9ovwizze 
 6ca234e7aa09     api-app:8.3-swoole             "docker-entrypoint.s…"     4 days ago     Up 4 days     9000/tcp                fluir_api_reverb.1.olz5ieevcx0l77w8vrdugpnkp 
 5afffe0a518e     api-nginx:latest               "/docker-entrypoint.…"     4 days ago     Up 4 days     80/tcp                  fluir_api_nginx.1.4jkamx5g1nmwzuj4ja2sv84o4 
 7f65a388c14a     api-app:8.3-swoole             "docker-entrypoint.sh"     4 days ago     Up 4 days     9000/tcp                fluir_api_app.1.zfpkflrfhngxfdk40s007kkuo 
 7443eac605df     traefik:v2.10                  "/entrypoint.sh --pr…"     4 days ago     Up 4 days     80/tcp                  fluir_api_traefik.1.r4seahn85hvgy9ybdpx613769 
 5e0d8f12f1aa     postgres:16-alpine             "docker-entrypoint.s…"     4 days ago     Up 4 days     5432/tcp                fluir_api_postgres.1.calxjb5tqodw3kounkssdj8mm 
 ``` 

 ### 
 ```shell 
 docker exec -it $(docker ps -qf "name=fluir_api_app.1") sh 
 ``` 

 Например, чтобы зайти в сервис payments, нужно выполнить 

 ```shell 
 docker exec -it $(docker ps -qf "name=fluir_api_payments.1") sh 
 ``` 

 --- 

 Внутри контейнера можно выполнять стандартные команды 

 ```shell 
 php artisan migrate 

 php artisan db:seed --class=Database\\Seeders\\RolesSeeder --force 
 php artisan db:seed --class=Database\\Seeders\\DatabaseSeeder --force 
 ``` 

 ---  
 --- 
 --- 

  

 Сейчас данные действия проводить не нужно, это делается когда проект поднимается на сервере или локально первый раз. 

 ## Список команд для Docker и Swarm для сети fluir: 

 **Инициализация swarm** 
 ```shell 
 docker swarm init # если ещё не выполнено локально 
 docker swarm init --advertise-addr 46.101.125.135 # если ещё не выполнено на сервере 
 ``` 

 **Создаем сеть fluir** 

 ```shell 
 docker network create --driver overlay --attachable fluir 
 ``` 

 **Проверяем наличие сети** 
 ```shell 
 docker network ls 
 ``` 

 **Удалить сеть** 
 ```shell 
 docker network rm fluir 
 ``` 

 **Детальная информация о сети** 
 ```shell 
 docker network inspect fluir 
 ``` 

 --- 

 **Перезапуск** 
 ```shell 
 docker service update --force fluir_admin_admin 
 ``` 

 **Останов сервисов** 

 ```shell 
 docker stack rm fluir_profiles 
 docker stack rm fluir_payments 
 docker stack rm fluir_orders 
 docker stack rm fluir_notifications 
 docker stack rm fluir_contents 
 docker stack rm fluir_chats 
 docker stack rm fluir_kyc 
 docker stack rm fluir_authentication 
 docker stack rm fluir_webview 
 docker stack rm fluir_admin 
 docker stack rm fluir_api 
 docker stack rm fluir_redmine 
 ``` 

 **Запуск сервиса api** (см. файл /home/fluir/project/start_services.sh) 
 ```shell 
 cd api 
 docker stack deploy -c api-stack.prod.yaml fluir_api 
 ``` 

 ### Веб интерфейс Traefik (он работает только для мониторинга) 

 https://traefik.fluir.us/dashboard/#/ 
 login: fluir 
 pass: baf22ddb