докер

grigori

( ͡° ͜ʖ ͡°)
Команда форума
@Redjik, конфиг:
  • автоматом реплицируется между инстансами сворма
  • доступен только назначенному контейнеру
  • можно задать строкой через вызов из bash/ансибла/whatever
  • хранится в памяти, соответственно, ребут не переживет, и подсмотреть его не так просто
  • read-only
 

fixxxer

К.О.
Партнер клуба
В последней версии докера 17.6 реализована важная фича - сущность под названием Configs.
О, до них таки дошло!
Теперь 99% моих претензий к докеру, наверное, неактуальны. (Хотя надо попробовать, как оно работает).
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Собираю образ для PHP. Файл Dockerfile с этими строками касперский определил как Trojan/Backdoor, и молча перенес из проекта в свою папку.
RUN chmod a+x /usr/local/bin/docker-php-entrypoint \
&& chmod o-rx /bin/busybox /usr/bin/curl /usr/local/bin/pecl \
&& wget http://www.imagemagick.org/download/ImageMagick.tar.xz \
&& tar -xf ImageMagick.tar.xz && cd ImageMagick* \
&& ./configure --disable-docs --without-x --without-magick-plus-plus --with-wmf=no \
&& make -j$CPU_COUNT && make install && ldconfig /usr/local/lib \
&& rm -rf ImageMagick* FLIF* \
&& yes no| pecl install imagick

Просто пишу файл на диск, а он пропадает. Пишу еще раз - он пропадает.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
https://hub.docker.com/r/grigori/phpextensions/tags/
Собрал образы для 7.2
  • 7.2-fpm - на базе alpine со всеми обычно нужными расширениями
  • 7.2-pthreads - ZTS-сборка с расширением pthreads
Добавил в образы поддержку скриптов инициализации. Реализацию подсмотрел в образах баз данных.
При первом запуске контейнера из образа выполняются .sh и .php скрипты в папке /docker-entrypoint-init.d/*
Часто нужно выполнить какие-то действия для инициализации приложения - создать папку assets и runtime, выставить пермиссии, и т.п. Теперь для этого не нужно создавать отдельный контейнер или собирать свой образ - скрипты для инициализации можно подмонтировать.
 
Последнее редактирование:

grigori

( ͡° ͜ʖ ͡°)
Команда форума
целевой usecase - чтобы в docker stack создать одинаковую среду в разработке и в проде, пример stack.yml выложу

еще удобно для организации тестового окружения

если есть замечания по поводу использования в проде - пиши, поправлю
 

fixxxer

К.О.
Партнер клуба
Компилять в Dockerfile для прода как то сурово :)
Да и без четкой привязки к версии стремно.
 
  • Like
Реакции: AmdY

grigori

( ͡° ͜ʖ ͡°)
Команда форума
что именно сурово? pthreads для 7.2 - конечно, не зарелижен, это для поиграться, а 7.2-fpm - это официальный, я только расширения добавил - опять же, официально рекомендованным способом
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
а что стремного в привязке к middle-версии? автообновление по минорным версиям я лет 10 делаю не задумываясь
 

fixxxer

К.О.
Партнер клуба
автообновление по минорным версиям я лет 10 делаю не задумываясь
Везунчик!

Я с pecl-расширениями, особенно сторонними, так пару раз сильно попадал.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
мне кажется, мы говорим о разных вещах

из pecl у меня redis, memcached и igbinary дефолтных версий - у тебя когда-нибудь были с ними проблемы? у меня не было
xdebug собирается, но не включается

Код:
    && yes no| pecl install igbinary xdebug \
    && pecl download redis memcached \
        && tar -xf redis* && cd redis* && phpize && ./configure --enable-redis-igbinary && make -j$CPU_COUNT && make install && cd .. \
        && tar -xf memcached* && cd memcached* && phpize && ./configure --disable-memcached-sasl --enable-memcached-igbinary && make -j$CPU_COUNT && make install && cd .. \
    && docker-php-ext-enable igbinary redis memcached
apcu выкинул, он не используется вместе с memcache
 
Последнее редактирование:

fixxxer

К.О.
Партнер клуба
С memcached были жесть какие, но это лет 8 назад. Даже не с самим расширением, а с библиотекой.

Вообще столько раз сталкивался с регрессиями даже в минорных версиях, что с тех пор таскаю байт в байт то, на чем все протестировано.

UPD. Ну и если честно, вообще не понимаю, нафига компилять в Dockerfile. Я компиляю что надо, кладу в образ и фигачу на докерхаб с бинарями онли, мечу тегами.
 
Последнее редактирование:

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Чтобы оно само пересобирало образы под новые минорные версии php.
Регрессий с минорными версиями помню очень мало. Как-то был срочный релиз на исправление ошибки, которую внесли в последнем минорном релизе, но это раз в пять лет.

Компиляция memcached там для igbinary. Может быть, можно как-то указать параметр pecl install, чтобы собирал memcached с igbinary, но я не нашел.
 
Последнее редактирование:

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Кстати, спор насчет сборки и блобов признан официальной дисциплиной специальной олимпиады, и называется "Debian VS Gentoo".
 

fixxxer

К.О.
Партнер клуба
Сборка из сорцов на продакшене (gentoo portage / freebsd ports/ ...) - это точно дисциплина специальной олимпиады, да. Причем во таких всех системах есть возможность установки бинарных пакетов.

Лет 10 назад, во времена популярности freebsd, вообще был стандартный тест на собеседовании на админа: собирает на продакшене из портов - сразу до свидания.
 

WMix

герр M:)ller
Партнер клуба
Я компиляю что надо, кладу в образ и фигачу на докерхаб с бинарями онли, мечу тегами.
update для системы делать не будем?
вообще это же нормально компелить, вопрос откуда исходник.. или я что-то не допонимаю?
(там test/staging...)
 

fixxxer

К.О.
Партнер клуба
update для системы делать не будем?
Будем, разумеется, будет новый тег.
Ты же не собираешь rpm/deb-пакеты на продакшене? Ну и вот. А какая разница, куда собранный пакет установить? Можно и в докере для образа. В alpine пакеты даже удобнее делать.
вообще это же нормально компелить
На продакшене - не нормально. На билд-машине - отлично.
 
Сверху