Project

General

Profile

Actions

Docker+Swarm » History » Revision 2

« Previous | Revision 2/3 (diff) | Next »
Dmitry Vasilev, 12/01/2025 02:35 PM


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

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

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

Запуск сервиса на локальной системе

export DOCKER_NAME=fluir

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

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

export DOCKER_NAME=fluir

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

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

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

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

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

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

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

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

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

docker swarm init # если ещё не выполнено локально
docker swarm init --advertise-addr 46.101.125.135 # если ещё не выполнено на сервере

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

docker network create --driver overlay --attachable fluir

Проверяем наличие сети

docker network ls

Удалить сеть

docker network rm fluir

Детальная информация о сети

docker network inspect fluir

Перезапуск

docker service update --force fluir_admin_admin

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

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)

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

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

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

Updated by Dmitry Vasilev 2 months ago · 3 revisions