Artem
SQL миграция, BusyBox, образы на воркерах, что то не догоняю какая между этим всем связь😐
Andrew Kiselev
Ну у тебя же одна БД, вот ты ее и мигрируй как-нибудь. Но если ты хочешь без даун тайма, то у тебя должна быть обратная совместимость в приложении
т.е. мне необходимо расписывать возможные сценарии в серверном коде для поддержки двух состояний “дб 1” и “дб 2” (до миграции и после)?
Andrey
Если без даун тайма, то да. У тебя выполняется миграция - все работает. Потом начинаешь добавлять новые экземпляры приложения и переключаешь нагрузку.
Andrey
т.е. мне необходимо расписывать возможные сценарии в серверном коде для поддержки двух состояний “дб 1” и “дб 2” (до миграции и после)?
Но если какая-нибудь монга, то можно миграций пытаться избежать и всегда только расширять схему.
Andrey
Понял. Спасибо. Попробую реализовать
Главное приложение должно быть стейтлесс... И от каких нибудь сессий не зависело
Andrey
у меня redis для сессий и RDS
А в сессии что хранить?
Andrew Kiselev
А в сессии что хранить?
id пользователя и кука
Andrey
id пользователя и кука
Ну ИД можно из куки на каждый запрос вытаскивать и тогда можно выбросить редис
Something
редис быстрее rds
Something
для этих целей самое то
Something
тем более рдс не дешевое удовольствие)
Andrey
редис быстрее rds
Ну это нужно проверить, что редис быстрее Кеша rds. Оба в памяти сидят. Ну ещё можно зашифровать ид в куку, тогда вообще в бд ходить не надо :)
Andrew Kiselev
сейчас я использую https://www.npmjs.com/package/connect-redis с passport.js
Анатолий
кто может подсказать можно из cloud докера запустить контейнер с параметром -name? чтобы можно было к нему не по id обращаться а по названию?
Andrew Kiselev
кто может подсказать можно из cloud докера запустить контейнер с параметром -name? чтобы можно было к нему не по id обращаться а по названию?
docker ps -aqf "name=containername” - можно получить id контейнера и потом использовать как $(docker ps -aqf "name=containername”) - получится id
Andrew Kiselev
только обратите внимание, если у вас будут названия app, app-staging, то через такой запрос получите 2 id, для app и app-staging соответствующе
Анатолий
спасибо. примерно понял
Анатолий
не то что я хотел =) но так тоже пойдет
Andrew Kiselev
👍
Valerii
Кто-нибудь работал с Rancher + AWS NAT Gateway?
Valerii
Проблема в том, что healthcheck'и на хостах, которые находятся в одном Environment'е начинают вести себя неадекватно, сообщая, что они получают 403 на попытку достучаться до url'а rancher сервера, как только я добавляю в таблицу маршрутизации этой сети nat gateway из соседней публичной подсети.
подскажите пожалуйста порядок сбора контейнера в docker compose
например nginx + php-fpm
получается примерно так version '3' services: nginx: build:nginx/ container_name: nginx image:nginx network_mode:host php: container_name: php image:php7.0 network_mode:host
Какой большой у тебя конфиг)
какой пока умею)))), учитывая что с докером только второй день работаю. Пытаюсь обучиться правильно делать...
Денис
Нет
Денис
В каждом контейнере работает по одному процессу
Денис
Как и должно быть
Денис
Просто docker-compose up
я извиняюсь что задаю тупой вопрос ERROR: Service 'nginx' has a link to service 'php:7-fpm' which is undefined.
пробовал просто php-fpm писать и просто php. чето не вкуриваю
и бд обязательно нужна?
Дмитрий
у тебя сервис называется php-fpm
Sergey
зачем тебе links?
Sergey
а, потому что 3.5 версия компоуз файлов?
я хз, делаю по мануалу. Пока не всё разобрал
Нет времени всё прям читать(((
сижу туплю короч)
Sergey
кто-то умрет если ты почитаешь доки пару дней?
a1eXei
зачем пишешь в сервисе nginx связь с несуществующим сервисом? сервис php-fpm так и напиши links: - php-fpm линкуешь сервисы, а не образы
a1eXei
или попробовать сам сервис назвать phpfrpm: и линк аналогичный links: - phpfpm
кто-то умрет если ты почитаешь доки пару дней?
будет 2 выходных, буду читать более подробно по compose
спасибо за ответы
Sergey
спасибо за ответы
рекомендую особенно тщательно изучить разницу между такими понятиями как "образ", "контейнер" и "сервис"
A
Всем привет, ребят. Используется docker compose (file version :3). Есть 2 микросервиса и container с rabbitmq. Как сделать так, чтоб микросервисы ждали, пока rabbitmq загружается?
Nklya
depends_on
A
depends_on
Уже поставил, но не помогает.
A
Вот compose файл: version: '3' services: rabbitmq: image: rabbitmq:alpine ports: - "5672:5672" producer: image: "producer" depends_on: - rabbitmq consumer: image: "consumer" depends_on: - rabbitmq
Nklya
Надо смотреть есть ли и какой хелсчек в образе rabbitmq
A
Но depends_on с health check не поддерживается в docker compose v3. Или я не прав?
Александр
depends_on не гарантирует готовности контейнера, смотрите доку по композу
Александр
Ожидание готовности - дело зависимого контейнера (приложений в нем)
A
Да, но это порождает вот такой код: Connection connection = null; while(connection == null || !connection.isOpen()) { try { connection = factory.newConnection(); } catch (Exception e) { System.out.println("Trying to connect to RabbitMQ again..."); Thread.sleep(1000); } }
Oleh
Привет а как создать docker volume в кастомной директории? не могу норм нагуглить( тыкните носом плс..
Александр
Привет а как создать docker volume в кастомной директории? не могу норм нагуглить( тыкните носом плс..
В dockerfile пишешь: VOLUME /path/inside/of/container при запуске пишешь: -v /path/on/host:/path/inside/of/container
Artem
Да, но это порождает вот такой код: Connection connection = null; while(connection == null || !connection.isOpen()) { try { connection = factory.newConnection(); } catch (Exception e) { System.out.println("Trying to connect to RabbitMQ again..."); Thread.sleep(1000); } }
Компоуз и докер и не определяет поднятия приложения внутри, он определяет только ап самого контейнера и так было всегда, предусматривайте в своих приложениях ретрай и реконнекты на этот случай.
Roman
привет всем, люди помогите разобраться я могу поднимать сетку (например 172.30.0.0/16) и потом через отдельные компоузы поднимать сервисы с кастомными и постоянными ip-адресами из этой подсети? вот например я создал командой docker network create \ —driver=bridge \ —subnet=172.30.0.0/16 \ —ip-range=172.30.5.0/24 \ —gateway=172.30.5.254 \ br0 # docker network ls NETWORK ID NAME DRIVER SCOPE 8e1e410df54d br0 bridge local но когда пытаюсь использовать version: '3' services: busybox: container_name: busybox image: busybox networks: br0: ipv4_address: 172.30.5.1 restart: always networks: default: external: name: br0 ошибка что сервис использует неопреденную сеть: ERROR: Service "busybox" uses an undefined network "br0"
Roman
вообще я хочу поднять кластер из докер-контейнеров (скорее всего на swarm), у которого ноды будут распологаться на разных хостах и чтобы у каждого контейнера был постоянный ip-адрес и поднимались они через docker-compose в докере я практически новичок, может подскажете как лучше это реализовать в двух словах? буду благодарен
Анатолий
cloud.docker.com
Анатолий
я тоже новичок. но ты бы хоть доки начал читать...
Анатолий
всякие мануалы и гайды не пойдут - в докере слишком быстро все меняется. если гайд не обновили - можешь наткнуться на проблему, которую уже решили в новой версии
Sergey
> чтобы у каждого контейнера был постоянный ip-адрес не завязывай взаимодействие контейнеров на IP адреса, DNS всему голова
Sergey
> поднимались они через docker-compose с нынешним уровнем развития docker-compose и docker swarm это не принесет тебе ничего кроме боли
Sergey
хотя при должном старании можно уменьшить уровень боли до легкого покалывания
Sergey
но стоит ли оно того