tutunak
Привет! Вопрос архитектурный больше, ну и совета спросить. Дано: бэк на python (два образа уже подготовил, app и rabbitmq consumer). И фронт на js. Цель: сделать генератор сайтов, т.е. три контейнера с новым конфигом == новый сайт. Создавать это должен менеджер, у которого нет технических знаний. Т.е. зашёл на простую админку, ввел некоторые данные и нажал "создать сайт". И уже под капотом понеслось: 1. Создалась отдельная БД 2. Сгенерировался конфиг с доступами и данными, которые ввел менеджер 3. Создались контейнеры бэка и фронта с конфигами. 4. Прописались на nginx Я правильно понимаю, что кроме как писать свой велосипед, других решений нет? У меня пока два варианта: 1. Создать Jenkins(ну или любую другую ci) джобу. Которая будет эти шаги дергать + простой ui для менеджера (придумаю позже на чем проще). Который будет дергать эти джобки. 2. Полностью свой велосипед, на чем-нибудь вроде flask. Ну и сейчас выбираю между swarm / k8s. Кластер будем свой поднимать. Посмотрел бегло тут: [тут должна быть ссылка на хабр] все решения больше для администрирования (какое-то точно прикрутим, чтобы наблюдать за этим зоопарком). Итого: 1. Не изобретаю ли велосипед? И две описанные реализации -- это единственное возможное? 2. В контексте задачи для генерации сайтов, что лучше подойдет: swarm или k8s? Посмотрел, что есть два пакета питоновских: docker и kubernetes. В целом с хорошей докой (На первый взгляд). Цель в использовании swarm/k8s простая. Если вдруг (почти не реальная ситуация у нас, малые нагрузки), где-то бэк или фронт завалился, просто докинуть реплику в ручном режиме. В общем, кто что посоветует. Сразу прошу прощения, если формулировки где-то странные, новая тема, неделю только разбираюсь. Пока только все в образы запихнул и кластер swarm сделал, где смог пока с захардкоженными конфигами запуститься. И вот подумалось, а не изобретаю ли колесо? Всем заранее спасибо за критику и советы.
Ну в общем для "менеджера" какой либо интерфейс делать придётся, дёргать ci/cd под капотом тоже норм, имхо это быстрее чем собственная реализацич
Константин
всем привет, кто использует связку docker php-fpm-7 nginx mysql-5 ? не могу понять как подключаться к БД mysql, пишет Fatal error: Uncaught PDOException: SQLSTATE[HY000] [2002] Connection timed out in
Константин
А как ты это делаешь
что именно? могу скинуть архив с докер-файлами что самое интересное, из контейнера mysql я спокойно захожу в базы
Andrey
Как подключаешься, по имени?
Константин
Andrey
Его покажи
Константин
Как подключаешься, по имени?
уже по всякому пробовал, ошибки ессно разные постоянно
Константин
Константин
Константин
Константин
Andrey
Что это
Константин
Что это
там docker-compose и dokerfile всех контейнеров
Andrey
Я с телефона
Andrey
Какой зип
Константин
Я с телефона
а как я тебе покажу, если в скрин не влезает )))
Константин
Andrey
там docker-compose и dokerfile всех контейнеров
Посмотри конфиг майсикуля, скорее всего там только с локалхоста подключения принемает
Константин
Andrey
если закомментировать bind-address то та же ситуация
Ты порт пробросил, с хоста тоже не можешь?
Andrey
из контейнера?
С хостовой тачки
Andrey
Любым клиентом
Andrey
32769
Константин
32769
имеешь в виду так ? mysql -h 172.28.0.3 -P 32769 -u root
Andrey
имеешь в виду так ? mysql -h 172.28.0.3 -P 32769 -u root
Хоть так, вообще можно по локалхост
Константин
с phpmyadmin так же заходит
Константин
а из php не хочет
Ilya
Недавно с docker, mysql: build: context: ./docker/mysql command: --default-authentication-plugin=mysql_native_password user: '1000' restart: always environment: volumes: - ./source/dbase:/var/lib/mysql ports: - "3306" depends_on: - php-fpm Я сам мало работал с compose, но по доке: SHORT SYNTAX Either specify both ports (HOST:CONTAINER), or just the container port (an ephemeral host port is chosen). + у вас сам php в отдельной сети, а mysql нет
Tadeusz
оффера запускаешь?)
Andrey
Почему сеть не везде?
Константин
Почему сеть не везде?
а как надо, подскажи
Ilya
а как надо, подскажи
php-fpm: build: ./docker/php-fpm container_name: scool-phpfrm-up volumes: - ${APP_PATH_HOST}/app:${APP_PATH_CONTAINER} working_dir: ${APP_PATH_CONTAINER} environment: XDEBUG_CONFIG: "remote_host=192.168.220.1 remote_enable=1" PHP_IDE_CONFIG: "serverName=Docker" networks: - internal Так у вас указано, networks и mysql должен быть
Andrey
Ну да,
Andrey
Конечно
Константин
т.е. так у php networks: - internal - mysql это имеете в виду?
Ilya
@coder_ex нет, просто скопируй networks. и сделай docker inspect <container_name> и посмотри на настройки, на секцию network до и после, как compose обновишь
Константин
спс парни
Ilya
спс парни
Сейчас проверил для себя, т.к. не знал. То что порт у тебя прописан только одно значение, каждый раз когда поднимается контейнер, он мапится на случайный порт (в доке это и написано). Если захочешь ходить в мускуль с локальной тачки, добавь второй порт. А то придется каждый раз через ps смотреть на каком порту, чтобы подключиться
Константин
сейчас на всякий случай полностью пересоберу и проверю
Ilya
он вроде цепляется по 3306, несколько раз рестарт делал и всегда с одним портом
Кто цепляется? Я имелл виду что с localhost (машины где запущен докер) вы попробует подключиться к mysql -h localhost -p 3306, то ничего не выйдет, т.к. порт не замаплен. Но возможно я чего-то еще не знаю и не увидел в compose и поэтому у вас работает )
Andrey
3306:3306
Andrey
как пример
Константин
3306:3306
я так сейчас и сделал, пересобираю и посмотрю
Ilya
Привет! Вопрос архитектурный больше, ну и совета спросить. Дано: бэк на python (два образа уже подготовил, app и rabbitmq consumer). И фронт на js. Цель: сделать генератор сайтов, т.е. три контейнера с новым конфигом == новый сайт. Создавать это должен менеджер, у которого нет технических знаний. Т.е. зашёл на простую админку, ввел некоторые данные и нажал "создать сайт". И уже под капотом понеслось: 1. Создалась отдельная БД 2. Сгенерировался конфиг с доступами и данными, которые ввел менеджер 3. Создались контейнеры бэка и фронта с конфигами. 4. Прописались на nginx Я правильно понимаю, что кроме как писать свой велосипед, других решений нет? У меня пока два варианта: 1. Создать Jenkins(ну или любую другую ci) джобу. Которая будет эти шаги дергать + простой ui для менеджера (придумаю позже на чем проще). Который будет дергать эти джобки. 2. Полностью свой велосипед, на чем-нибудь вроде flask. Ну и сейчас выбираю между swarm / k8s. Кластер будем свой поднимать. Посмотрел бегло тут: [тут должна быть ссылка на хабр] все решения больше для администрирования (какое-то точно прикрутим, чтобы наблюдать за этим зоопарком). Итого: 1. Не изобретаю ли велосипед? И две описанные реализации -- это единственное возможное? 2. В контексте задачи для генерации сайтов, что лучше подойдет: swarm или k8s? Посмотрел, что есть два пакета питоновских: docker и kubernetes. В целом с хорошей докой (На первый взгляд). Цель в использовании swarm/k8s простая. Если вдруг (почти не реальная ситуация у нас, малые нагрузки), где-то бэк или фронт завалился, просто докинуть реплику в ручном режиме. В общем, кто что посоветует. Сразу прошу прощения, если формулировки где-то странные, новая тема, неделю только разбираюсь. Пока только все в образы запихнул и кластер swarm сделал, где смог пока с захардкоженными конфигами запуститься. И вот подумалось, а не изобретаю ли колесо? Всем заранее спасибо за критику и советы.
Возник еще вопрос. Пока вожусь со swarm, т.к. образы свои. То для того чтобы сервис стартовал на всех нодах, пришлось поднять свой сервис registry. И пока получается архитектура такая: 3 ноды swarm, на которых будет registry и сервисы 1...n (фронт / бэк). Не очень мне нравится что registry будет на тех же нодах что и сервисы, но я пробовал создавать репозиторий просто как отдельный докер контейнер и указывать его при создании сервиса. В таком случае на основной ноде (там же где и контейнер) сервис создается, а вот остальные ноды не видят image. Т. е. в идеале, я хочу чтобы вся управляющая инфраструктура была на отдельной тачке (т.е. там будет сам репозиторий с образами, скорее всего какой-то CI, может что еще). Это реально? Надо просто как-то сетку хитро настроить, чтобы все ноды видели репозиторий, который будет на другой тачке?
Andrey
Возник еще вопрос. Пока вожусь со swarm, т.к. образы свои. То для того чтобы сервис стартовал на всех нодах, пришлось поднять свой сервис registry. И пока получается архитектура такая: 3 ноды swarm, на которых будет registry и сервисы 1...n (фронт / бэк). Не очень мне нравится что registry будет на тех же нодах что и сервисы, но я пробовал создавать репозиторий просто как отдельный докер контейнер и указывать его при создании сервиса. В таком случае на основной ноде (там же где и контейнер) сервис создается, а вот остальные ноды не видят image. Т. е. в идеале, я хочу чтобы вся управляющая инфраструктура была на отдельной тачке (т.е. там будет сам репозиторий с образами, скорее всего какой-то CI, может что еще). Это реально? Надо просто как-то сетку хитро настроить, чтобы все ноды видели репозиторий, который будет на другой тачке?
Почитай про Nexus, там есть докер репозиторий
Max xbim 🌴
Возник еще вопрос. Пока вожусь со swarm, т.к. образы свои. То для того чтобы сервис стартовал на всех нодах, пришлось поднять свой сервис registry. И пока получается архитектура такая: 3 ноды swarm, на которых будет registry и сервисы 1...n (фронт / бэк). Не очень мне нравится что registry будет на тех же нодах что и сервисы, но я пробовал создавать репозиторий просто как отдельный докер контейнер и указывать его при создании сервиса. В таком случае на основной ноде (там же где и контейнер) сервис создается, а вот остальные ноды не видят image. Т. е. в идеале, я хочу чтобы вся управляющая инфраструктура была на отдельной тачке (т.е. там будет сам репозиторий с образами, скорее всего какой-то CI, может что еще). Это реально? Надо просто как-то сетку хитро настроить, чтобы все ноды видели репозиторий, который будет на другой тачке?
Да доступы настрой, авторизацию на регистри и клиентах и будет ок
Vlad
Коллеги, подскажите, как сейчас в Docker обстоят дела с организацией сети для SIP / RTP, когда для одного инстанса приложения нужен большой диапазон портов TCP/UDP 10000:40000 и как это решается, когда на одном хосте может быть запущено 5-6 таких инстансов. Что при этом происходит с iptables и процессами на хосте? Спасибо.
George
мне кажется, что Вы не хотите попросту пользоваться бриджом... Можете попробовать либо на хост навесить несколько ip, а пускать контейнеры в хостовой, а само приложение настраиваить на нужный ip, но это гемора много
George
либо второй вариант - macvlan, но я его глубоко не копал
George
касательно sip - задумайтесь еще над чем - если использовать докеровские сети, то айпишник внутри контейнера будет отличаться от айпи хоста - может понадобиться STUN или спец. настройки
George
а задача какая полная?
George
и, как я понимаю, привлекло удобство использования докер образов?
Vlad
и, как я понимаю, привлекло удобство использования докер образов?
Overlay FS в Docker удобная штука и, насколько я понимаю, аналогичная штука есть и в LXC, при использовании его с backend fs, поддерживающей snapshots (btrfs, zfs). Но вопрос не в этом. Я хочу понять, кто какую технологию выбирает и чем при этом руководствуется, и вообще, какой уровень понимания того, что он делает и как все там устроено "под капотом".
George
а, ну, ок
Slayer
Здравствуйте, подскажите почему wget не скачивает файл при сборке Dockerfile?
Slayer
RUN wget -O /opt/zimbra-install/zimbra-zcs-8.8.15.tgz https://files.zimbra.com/downloads/8.8.15_GA/zcs-8.8.15_GA_3869.UBUNTU18_64.20190918004220.tgz
Slayer
на этапе распаковки вылизает ошибка, файла нет
kSandr
на этапе распаковки вылизает ошибка, файла нет
лять, как же вы достали ... а ошибку прислать слишком сложно а ????
George
Здравствуйте, подскажите почему wget не скачивает файл при сборке Dockerfile?
А вне джокера скачивает ?ошибка какая ? Точно только
kSandr
расскажите почему у меня в носу чешется, на этапе пука, чешется
kSandr
архиватор которым распаковывать есть ?
Slayer
нет ошибки, просто проскакивает комманду и на этапе распаковки уже ошибка что файла с именем zimbra-zcs-8.8.15.tgz нет
Boris 🦍
Slayer
конечно
Slayer
вот именно