Anonymous
Нормальная система оркестрации эт точно не компоуз)
Aion
что для вас нормальная система оркестрации?
Anonymous
Кубер хотя б)
Anonymous
Ну или марафон
Aion
я не прошу названия, я прошу список критериев по которому вы так решили
Александр
У swarm нет неймспейсов, он вяло реагирует на смерть ноды
Anonymous
Вообще я скорее за dcos
Andrey
неймспейсы - стэки? А что значит вяло реагирует? интервалы таймаутов и опроса нод настраиваются
Anonymous
Можно отвязаться от докера
Александр
Александр
Александр
Стейдж и пререлиз - там одинаковый набор сервисов, но в сварме они в куче
Александр
В кубе можно разделить по неймспейсам
Александр
Короче он более гибкий, но значительно сложнее
Александр
Весь менеджмент с одного хоста, в сварме либо я сто-то не так делал, либо так и есть, но зайти в конкретный контейнер на другой ноде у меня не получилось
Andrey
Можно ссылку? Попробую повертеть
docker swarm init —dispatcher-heartbeat (default: 5s) - это про вялость реакции. Dispatcher heartbeat period (ns|us|ms|s|m|h)
Andrey
я просто еще не сталкивался с задачами, которые swarm не сможет реализовать, но у меня и опыта в этом деле не так много и проекты не "топовые" :)
Александр
Andrey
Есть пример .gitlab-ci?
в gitlab-ci соответственно можно деплоить стэки с разными именами (по имени тэга или коммита, например): docker stack deploy —compose-file docker-stack.stage.yml mystack_staging_${CI_COMMIT_REF_NAME} а собрать stage c override можно так: docker-compose -f config1.yml -f config2.yml config > docker-stack.stage.yml но скоро этот "колхоз" запилят и можно будет прямо в stack deploy override использовать: https://github.com/docker/cli/pull/569
Александр
Мне интересно именно .gitlab-ci.yml, и используете ли volume?
Александр
и secret
simplemice.eth
@Ai_boy
Andrey
secret есть, я пока не изучал, но планирую. хочу что то типа общего хранилища секретов, что бы к нему можно было обращаться с любой ноды. Волюмы используются в некоторых случаях
Таймураз
Надо создать бота, который банит, если кто-то заходит и первым делом форвардит сообщение
Александр
Александр
Если хостовые, или с хоста не тру?
Andrey
У меня как хостовые так и в ceph (доп. плагин, локально тестирую). Контейнер поднялся - волюм подтянулся. если хостовой, то ессно при его наличии на хосте (в случае биндинга директории с хоста) есть и просто именованые волюмы - создаются сами, если их нет
Александр
спс
Александр
Всё-таки, можно .gitlab-ci.yml?) Или это секрет?)
Andrey
в лс кинул
Dmitry
Утром почитал статью https://soar.name/ru/pro/half-a-year-with-docker-swarm-mode-in-production/ и стало как-то грустно
Vladimir
Pavel
баги из коробки?)
Vladimir
Не, кубернетис удобоваримый
Andrey
Yaroslav
Привет! Кто-то из докера подымал ejabberd ?
Олексій
Привет! Кто подскажет: Все файлы которые создаются из под контейнера имеют owner`а - root. Соответственно я из хоста у меня нет прав на них без root прав
Pavel
docker run —user ...
Олексій
docker run —user ...
а глобально это можно установить? Запускаю контейнеры docker-compose`ом
Александр
Привет! Вопрос такой: как вы деплоите серверные приложения на ci (У нас gitlab)?
У меня в голове 2 варианта: демон, дёргающийся по хуку или агент, у которого есть доступ к шеллу. 1 вариант - нельзя скрипт деплоя менять прямо в репе, 2-ой небезопасный.
Так вот как это делать правильно?) Есть какие-нибудь паттерны?
Yevhen
Александр
stack_deploy - это скрипт на сервере, получается?
Александр
Не в репе?
Yevhen
Не в репе?
в репе, конечно же... Это выполнение локального скрипта на удаленном компе:
ssh provisioner@staging.lc VER=$CI_PIPELINE_ID 'bash -s' < ./docker/stack_deploy.sh
Yevhen
Не в репе?
Побольше подробностей о гитлаб CI с примерами/костылями и лично набытими шишками можно найти тут https://letsclearitup.com.ua/tag/gitlab-ci (14 статей, читайте с самых ранних)
Сейчас перешли на docker swarm, поэтому будут полезны также эти две статьи:
костыли с передачей переменных
https://letsclearitup.com.ua/docker/docker-swarm-stack-deploy-i-env-peremennyie.html
"велосипед" с томами (вместо выпиленной конструкции volumes_from)
https://letsclearitup.com.ua/deploy/docker-swarm-stack-deploy-i-imenovannyie-toma-named-volumes.html
Александр
Тогда уж сделать раннер с ssh-executor, выполнит
Александр
Но тут может быть беда в том, что это небезопасно. В репе можно понаписать что угодно
Yevhen
Но тут может быть беда в том, что это небезопасно. В репе можно понаписать что угодно
делаете несколько веток/окружений (staging|release|prod), локальные коммиты мержатся в ветку staging, запускается CI, изменения попадают на staging окружение. В конце спринта делается ветка релиз, она попадает на соответствующее окружение, где QA проводят регрессию (тестирование). После тестирования ветка релиз мержится в ветку прод и выкатывается на прод. В своем CI настраиваете автодеплой на стейджинг окружение, а деплой на релиз/прод делаете manual (выполнится только по нажатию на кнопку), даете доступ к пайплайнам только тем, кому доверяете
Александр
делаете несколько веток/окружений (staging|release|prod), локальные коммиты мержатся в ветку staging, запускается CI, изменения попадают на staging окружение. В конце спринта делается ветка релиз, она попадает на соответствующее окружение, где QA проводят регрессию (тестирование). После тестирования ветка релиз мержится в ветку прод и выкатывается на прод. В своем CI настраиваете автодеплой на стейджинг окружение, а деплой на релиз/прод делаете manual (выполнится только по нажатию на кнопку), даете доступ к пайплайнам только тем, кому доверяете
Так и сделаю, наверное, спасибо)
Александр
А есть примеры другой реализации? Демон, который отрабатывает по хуку
Yevhen
Так и сделаю, наверное, спасибо)
всегда пожалуйста! Если надумаете использовать вместе с docker swarm - пишите, скину вам пример своего скрипта stack_deploy.sh
Александр
Да, он намного сложнее, но в некоторых кейсах удобнее и гибче
Yevhen
Можно и сейчас скинуть) Сейчас я не готов окончательно определиться. Изучаю kubernetes, потом можно будет уже оценить плюсы и минусы swarm и kubernetes
скрипт выглядит так:
#!/bin/bash
DIRECTORY=~/docker
DC_FILE=docker-compose-stack-staging.yml
ENV_FILE=.env.staging.lc
REGISTRY=registry.gitlab.lc:5000
cd $DIRECTORY;
SERVICES=$(docker service ls —filter name=ed_applications —quiet | wc -l)
docker system prune -f;
docker volume create —name code-$VER
if [[ "$SERVICES" -gt 0 ]]; then
# Update
docker service update \
—detach=false \
—mount-add type=volume,source=code-$VER,target=/var/www/develop \
—constraint-add node.role==manager \
—with-registry-auth \
—image $REGISTRY/develop/ed/develop.sources:latest \
ed_applications
else
# Create
docker service create \
—name=ed_applications \
—mount type=volume,source=code-$VER,target=/var/www/develop \
—constraint node.role==manager \
—with-registry-auth \
$REGISTRY/develop/ed/develop.sources:latest
fi
env $(cat $ENV_FILE | grep ^[A-Z] | xargs) docker stack deploy —with-registry-auth —compose-file $DC_FILE ed;
Yevhen
Виталий
Добрый день.
Подскажите пожалуйста как быть в данной ситуации?
Я создал докер образ в котором присутствует склонированный из гит-репозитория код (файлы исходников).
Хочу чтобы файлы исходников были доступны извне.
Соответственно я выполняю команду с ключём -v
что-то типа такого:
docker run -v /d/my-local-path/code:/code -p 8080:8080 -p 8081:8081 —name container-name —restart unless-stopped -it image-name
Но проблема в том что файловая система в контейнере затирается тем что находится в /d/my-local-path/code (а там пусто)
Т.е. получается что файлы копируются извне в контейнер, а мне надо наоборот - из контейнера в локальную файловую систему.
Буду очень признателен если кто-то подскажет как поправить данное поведение.
Yevhen
Yevhen
Виталий
Dima
Коллеги, кто-нибудь поднимал докер реджистри с самоподписанным сертификатом?
Dima
https://docs.docker.com/registry/insecure/#use-self-signed-certificates
Dima
http://www.itzgeek.com/how-tos/linux/centos-how-tos/how-to-setup-docker-private-registry-on-centos-7-ubuntu-16-04.html
Dima
делаю все по доке и этой статье, но не взлетело
Dima
при пуше образа пишет: certificate signed by unknown authority
Виталий
Anton
Yevhen
при пуше образа пишет: certificate signed by unknown authority
да, там есть нюансы... всех не вспомню, делал давно - точно знаю что эти же сертификаты закидывал в контейнер с гитлабом и на каждой ноде, которая должна работать с реджистри закидывал ca.crt в /etc/docker/certs.d/registry.gitlab.lc:5000/ca.crt (после черо обязательно рестарт докера)
https://letsclearitup.com.ua/bash/gitlab-gitlab-ci-docker-registry-s-pomoshhyu-docker-compose.html
Yevhen
случайно не докер тулбокс? =)
Виндовс? Линукс?
можете подключиться к запущенному контейнеру и убедиться что внутри в каталоге /code действительно что-то есть?
Виталий