Denis
чтобы не было у каждого своего костыля для решения одной и той же маленькой проблемы
Anonymous
Vladimir
Я без проблем запускаю systemd в докере
И я тоже без проблем стартую, главное чтобы на хосте systemd работало
Evgeny
Ну можно и троллейбус сделать из хлеба, кто ж спорит
yopp
отличная аллегория
главное очень свежая
Anton
очень не хватает в телеграм чатах лайков к сообщениям как в слаке
Evgeny
Тут есть плюсы, спецом для тех кого в лепре забанили
Nikita Dwarf
Всем привет!
Nikita Dwarf
кто юзает ансибл с докером ?
Nikita Dwarf
скиньте плз пример плейбука
Serhio
http://bfy.tw/8v52
Roman
а для чего такое может понадобиться? в смысле ансибл+докер
Vlad
скиньте плз пример плейбука
https://github.com/vadikgo/ansible-docker-test/blob/master/docker-add-host.yml
Vlad
а для чего такое может понадобиться? в смысле ансибл+докер
Например как замена docker compose, или замена bash на ansible при сборке и настройке образов. Можно сделать универсальный способ деплоя как в контейнерах так и в обычных серверах.
Aleksey
Всем привет, можете подсказать как можно решить проблему. Я пытаюсь запустить в контейнере веб приложение: первоначально мне нужно собрать его c node.js и npm, а потом подложить под nginx. Хотелось бы переиспользовать официальные image node.js и nginx, но не представляю как их объеденить.
Stepan
Можно сделать три контейнера — один node с приложением, контейнер с нджинксом, который будет проксировать запросы к приложению и ещё один контейнер с днсмаском, который будет резолвить нджинксу хостнейм контейнера с приложением. И всё это в докер-композ
Igor
простой пример с использованием docker-compose.yml version: '2' services: nginx: image: dockerhub.art.rambler.ru/nginx:1.10.2-alpine volumes: - ./config/nginx.conf:/etc/nginx/nginx.conf ports: - '3000:80' depends_on: - web web: build: context: . dockerfile: Dockerfile env_file: .env command: sh -c "rm -f tmp/pids/server.pid && bundle exec rails s -b '0.0.0.0'" volumes: - .:/app
Igor
config для nginx worker_processes 4; events { worker_connections 1024; } http { include mime.types; server { listen 80; server_name localhost; location / { proxy_pass http://web:3000; proxy_set_header Host $host:3000; } } }
Igor
web:3000 это название контеера и порт на котором запущено приложение
Aleksey
Речь идет о клиентском приложении, node.js собирает, а nginx подбирает и раздает статику.
Igor
не сложно переделать пример выше в нужный тебе
Igor
можно поискать уже готовый на github - https://github.com/search?utf8=%E2%9C%93&q=docker+nginx+nodejs
Aleksey
Побовал готовый - не взлетает, какие-то проблемы с nginx. Поэтому решил подумать над использованием официальных версий.
Aleksey
Может создать два контейнера c общим volume, один будет туда писать, второй от туда читать?
Aleksey
Потом первый убивать
Evgeny
господа, что за херню вы изобретаете?
Evgeny
если надо собирать статику на этапе сборки и потом никогда делаете просто в два шага собрку
Aleksey
Только начинаю разбираться, можешь, пожалуйста, объяснить, что имеешь ввиду?
Aleksey
Я просто пока-что пытаюсь сделать так, чтобы можно было зайти на сервер и написать git clone ... docker-compose up -d
Evgeny
по хорошему сборку и запуск надо разделять.
Evgeny
В данном случае можно поступить двумя путями: 1) собирать статику в образ и там-же ее использовать. получится толстый неповоротливый образ который можно использовать если не надо таскать между машинами. можно просто композом 2) сделать сборку в два шага - сначала билдить образ с нодой который потом собирает статику, котрая потом поступает на вход сборки образа с нгинксом. образ будет легкий, метров 15-20 + размер статики
Aleksey
Понял, спасибо
Aleksey
Какими средствами можно после локальной сборки задеплоить контейнер с результатами сборки на сервер?
🏳️ Phil
пытаюсь понять - вот я взял docker-compose. и у меня изменился dockerfile для одного из сервисов. 1. он поймет это? 2. хорошо, не поймет. а как бы мне контейнер обновить с новым пересобранным имаджем?
Roman
docker-compose build servicename
Roman
или пожоще docker-compose build --no-cache servicename
🏳️ Phil
о. спасибо.
Roman
Какими средствами можно после локальной сборки задеплоить контейнер с результатами сборки на сервер?
если в кратце все как гитом. docker commit > docker push> (на удаленном сервере) docker pull
Roman
иногда надо :) если изменился например docker-entrypoint.sh
Evgeny
Почему из контекста это не будет понятно?
Roman
если докер в докерфайле слой не менялся, то возьмет из кэша же?
Evgeny
еслив докерфайле поменялся файл в контексте - поменяется и слой
Evgeny
если поменялась команда - поменяется слой
Evgeny
а no-cache инвалидирует все кеши.
Evgeny
у меня сборка проекта с кешем занимает 5 минут, без кеша - 3 часа.
Roman
грамотное использование и управление кэшем это то чему хотел бы научиться. но пока на толковые гайды не натыкался.
Evgeny
в доках докера хорошо написано
Anonymous
Anonymous
для этого есть докерфайл
Aleksey
Что-то я запутался, как лучше построить процесс сборки и деплоя приложения, без разницы, по отедельности или сразу всю инфраструктуру.
Evgeny
Ну как. Сначала собрать, потом деплоить
Evgeny
Будет норм, гарантирую
Aleksey
Если, к примеру, хочу написать скрипт, который запускаю локально и он проводит весь процесс деплоя, нормально будет, если он будет включать сборку приложения, сборку docker image, push в репозиторий, через ansible подключение к серверу по ssh, pull из репозитория и перезапуск контейнера?
Cin
Использую две версии композ файла. Один для дева, другой для продакшена. В том который для дева использую .build для про брошенных вн
Cin
для проброшенных внутрь контейнера каталогов.
Cin
В каждом каталоге есть докерфайл, который говорит как соответственно построить этот контейнер. Они же являются репозиториями которые размещены на гитлабе
Cin
На гитлабе настроено CI которая после пуша в реп собирает образ контейнера (у них там как-раз реджистри есть)
Cin
Ну и соответственно на продакшене используется докер-композ файл который берет образы с реджистри гитлаба
Aleksey
То есть использовать два скрипта, билд до push, и деплой все дальше? В целом идея нормальная, в смысле, не слишком замудреная?
Aleksey
На гитлабе настроено CI которая после пуша в реп собирает образ контейнера (у них там как-раз реджистри есть)
А предварительную сборку самого приложения в определенном окружении, к примеру node.js, можно настроить?
Cin
Думаю что да https://about.gitlab.com/gitlab-ci/
Cin
Единственное что я для себя не окончательно решил как быть с данными на продакшене - пока пробрасываю их на хост
Aleksey
Тем не менее, сначала хотелось бы настроить все локально. Задача все равно образовательная, а готовый скрипт потом можно перенести на любую CI
Cin
ну например картинки у меня на сайт пользователи загружают, пробрасываю этот каталог на хост систему.
Cin
пристально смотрю на https://infinit.sh/ для решения вопрос с данными, но пока им судя по всему еще далеко до продакшена
Alf 🙀
первая 40 лет делает именно это в продакшене
Alf 🙀
бтрфс такое себе но говорят работает, хотя выглядит так будто ipfs понадежнее будет
Cin
Не совсем понял про ZFS вот у меня есть один хост с контейнером на который пользователь залил картинку. Мне надо чтобы контейнер на другом хосте мог эту картинку увидеть.
Evgeny
есть тупой но легкий способ - lsyncd
Aleksey
Какие-то все вы тут слишком умные, может подскажете какие-нибудь ресурсы, где все это в совокупности описано?
Cin
о про lsyncd интересно, спс.
Aleksey
А то у меня в сфере администрирования опыт минимальный, хотелось бы узнать как более менее правильно построить инфраструктуру и настроить базовые процессы по поставке приложения. Получается только по кусочкам собирать информацию по разным инструментам, но в целостную картину пока не складывается.