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