Vitalii
Evgeny
Вот и мне интересно
Vitalii
а как нгинкс будет раздавать статику?
Vitalii
у него долежн быть доступ все к тому же приложению
Evgeny
А что статика делает в контейнере с кодом?
Vitalii
храниться. картинки, стили и прочее - это часть проекта и она живет в одном репо с кодом
Evgeny
Ну тогда вам не докер нужен, а просто виртуалка
Vitalii
ну приехали :)
Evgeny
Если хотите докер - постарайтесь понять чем он отличается от виртуализации и перестаньте делать крокодилов из швейной машинки
Evgeny
У Фила - особая ситуация, не надо его кейс расширять на всех. Если у вас свой проект - делайте нормально
Vitalii
а где видно что я хочу сделать виртуализацию?
Evgeny
Vitalii
что не правильного в том, что под каждый процесс я создал отдельный контейнер? и того уже имею контейнеры
nginx
php
memcache
db
Vitalii
уверен, что ничего. Так как инфтраструктура на докере и должна выглядеть.
Vitalii
Осталось только два контейнера снабрить кодом и все заработает.
Evgeny
Не надо код делать отдельно
Evgeny
Это моветон и опенвезешность
Vitalii
Я не спорю, вариант костыльный, но удобный.
У него есть несколько преимуществ:
1. Отдельны контейнер с кдом проще обслуживать. Чтобы обновить код нужно только пересоздать простой контейнер, а не пересобирать заново все компоненты пхп. Да, можно сделать наследование контейнеров. Но проддержка от этого только усложниться.
2. Отдельный контейнер с кодом отлично вписываеться в объектную модель.
app
/ \
nginx php
вместо
app (php + code) -- mount --> nginx
🏳️ Phil
Evgeny
Vitalii
Да не надо вшивать код, что за жопень-то?
надо или не надо это уже дело кажого.
Пр разработке можно и не вшивать, а хранить на хост машине. А при деплое надо вшивать, чтобы ничего не пришлось собирать на продакшене и часом не запороть все при сборке. Исключается человеческий фактор до минимума
Vitalii
Кеш сборки решает проблему пересборки пыхи
да, кеш сборки решает когда нет изменений в самых правилах сборки. Если добавить модуль какой-то в контейнер с пыхой, то придется пересобрать два контейнера (если сделать наследование)
Vitalii
как видно, каждый из нас прав :) и я предлагаю не спорить.
За время изучения докера я насмотрелся на контейнеры в которых все службы зашиты, так что мой вариант еще куда не шел :)
Vitalii
сейчас вопрос не имеет отношений конкретно к моему приложению. Я не могу понять, почему volumes_from не монтируется
Vitalii
и кто-то может сказать, что будет, если в compose написать у сервиса вот так
volumes:
- /var/www/html
что и куда примонтируется или создасться?
Evgeny
Если так хочется шарить из контейнера - почему не шарить из того же где уже работает фпм?
Evgeny
В чем смысл разделять?
Vitalii
Если так хочется шарить из контейнера - почему не шарить из того же где уже работает фпм?
Есть несколько преимуществ:
1. Отдельны контейнер с кодом проще обслуживать. Чтобы обновить код нужно только пересоздать простой контейнер, а не пересобирать заново все компоненты пхп. Да, можно сделать наследование контейнеров. Но проддержка от этого только усложниться.
2. Отдельный контейнер с кодом отлично вписываеться в объектную модель.
app
/ \
nginx php
вместо
app (php + code) -- mount --> nginx
Evgeny
Второй пункт не понимаю, извините. Первый, правда, тоже. Чем проще? Что надо все время таскать два вместо одного?
Evgeny
Пересборка компонентов решается кешом сборки
Vitalii
второй пункт - обычное объектное мышление. Общие части вынести в отдельный объект. Если у двух контейнеров есть что-то общее (код), значит это общее лучше сделать отдельным контейнером. Я так мыслю :)
Vitalii
мы пока спорим на счет моей инфтраструктуры, но в этом нет смысла :) я же не навязываю ее вам
Evgeny
Я первый раз увидел человека который сможет внятно обосновать свою точку зрения, а я пытаюсь ее понять уже давно :)
Vitalii
Sergei
Vitalii
Vitalii
Будет создан анонимный том в /var/lib/docker
есть контейнер app, вот его Dockerfile
----
FROM busybox:musl
COPY ./source /var/www/html
WORKDIR /var/www/html
----
что нужно сделать, чтобы его папку /var/www/html можно было через volumes_from смонтировать в другой контейнер?
Sergei
Volume /var/www/html
Vitalii
Volume /var/www/html
в этом Dockerfile или в файле контейнера к которому нужно примаунттить? но ведь эта конструкция помечает указанные пути к монтированию с хост машины или с другого контейнера при запуске создаваемого контейнета.
Vitalii
Volume /var/www/html
в Dockerfile контейнеров в которых я жду эту папку из вне указано
VOLUME ["/var/www/html"]
Sergei
в докерфайле с сорцами, в остальных volumes_from
Vitalii
Evgeny
Vitalii
в докерфайле с сорцами, в остальных volumes_from
невероятно, но заработало!
Скажи, пожалуйста, в чем была моя ошибка?
Ведь команда
VOLUME ["/var/www/html"]
помечает том к монтированию из вне, а у меня он уже был в контейнере. Где я ошибся?
Sergei
Вот же, первой строчкой)
"The VOLUME instruction creates a mount point with the specified name and marks it as holding externally mounted volumes from native host or other containers."
https://docs.docker.com/engine/reference/builder/#/volume
Vitalii
Sergei
но на самом деле некоторые места в доках выделяли бы жирным :)
Vitalii
🏳️ Phil
Evgeny
Любой коммит в мастер - да
Evgeny
Если ты меняешь каждые 5 минут настройки фпм - что-то с тобой не то
🏳️ Phil
Sergei
Сложно поспорить
Evgeny
Ну да, ну да. Настройки меняете каждые пять минут вы, делите все поровну просто так тоже вы, а усложняю я
Vitalii
кто GitLab использует?
Evgeny
Vitalii
если надо играть с настройками - прокиньте их на хост машину и все. Или меняйте сразу в контейнере, потом сохраните вариант конечный для сборки повторной и все.
Vitalii
пересобирать контейнер каждый раз нет смысла. Схема котрую я создавал для деплоймента. Для дева будет все прокинуло на хост-машину и агонь!
Evgeny
killall php-fpm && systemctl start php7
Vitalii
1. Берем, тушим проект и начинаем терять деньги
2. Сносим старый пых
3. ставим новый пых
4. Продолжаем терять деньги
5. В концу дня профит!
Evgeny
Но вообще переезд с 5.6 на 7, думается мне, потребует фиксов в коде, это не просто запустить в новом контейнере.
🏳️ Phil
Evgeny
Ну так же как и сейчас - закоммичу фикс, дальше дженкинс выкачивает сырцы, собирает контейнер, прогоняет тесты, деплоит на стейджинг, прогоняет интеграционные и функциональные тесты, дальше нажму кнопку в дженскинсе и деплойну блюгрином на прод
Evgeny
На локали у меня сырцы тоже маунтятся с локалоста в контейнер, но блин - это локальная разработка
Vitalii
Evgeny
Чем больше вы сейчас делаете фигню, тем сложнее настроить ci/cd дальше
🏳️ Phil
🏳️ Phil
Vitalii
Anonymous
прошу прощения за длинный текст, если не сложно то ответьте плиз как копать или сделать, сам разбираюсь еще с деталями а задачу надо выполнить скорее
Есть приложение написанное на Meteor.js - при деплое на сервер через https://github.com/kadirahq/meteor-up оно запускается внутри docker
Есть приложение https://github.com/arachnys/athenapdf - выдает то что надо с помощью команды в консоли docker run ...
Мне надо эту команду запустить внутри контейнера с Meteor и получить результаты
При установке meteor-up есть возможность залинковать docker, как я понимаю (есть в документации meteor-up)
из Meteor пытаюсь запустить с помощью node.js вызова
🏳️ Phil
Evgeny