Dnia czwartek, 20 sierpnia 2015 20:38:43 spin@hackerspace.pl pisze:
Z serii nie wiem to się wypowiem, ale czy nie byłoby najlepiej zachować kontener istniejący, przelinkować wyższe gałęzie drzewa na nowy, zklonowany, a potem zrobić merge baz jeśli jest taka potrzeba?
Spin, serio, nie mam pojęcia, o czym tu do mnie mówisz. Jakiego drzewa, jakie klonowanie?
Dnia czwartek, 20 sierpnia 2015 22:51:56 Tomasz Dubrownik pisze:
Czekaj, ale jaki jest problem? Że nie masz śledzenia zależności między kontenerami, czy że nie masz redundantnej / umiejącej retry infrastruktury? W sensie, czemu niby php-fpm ma się restartować jeśli restartujesz nginx?
Nie. Że jak przekręcę php-fpm, to muszę przekręcić nginxa, inaczej nginx robi wycieczkę do Bad Gateway Internet Resort.
Przekręcisz nginx, socket padnie, otworzy się nowy, done. Przekręcisz mysql, socket padnie, otworzy się nowy, done. Pewnie chcesz gdzieś frontend przekierować podczas takich operacji i poblokować nowe połączenia, ale nie czuję czemu tutaj są jakieś zależności wymagające restartów.
Nie chodzi o zależności php-fpma, chodzi o to, że php-fpm jest zależnością nginxa; po restarcie (znaczy, po wywaleniu i stworzeniu od zera, a to jest niestety AFAIK konieczne jeśli chcemy przebudować kontener) php-fpm, nginx "gubi" linkę do swojej zależności (bo zmienia się IP tejże, na przykład), i robi wielkie oczy jak przychodzi żądanie kierowane na ten php-fpm.
Let me demonstrate.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
$ curl -kI https://owncloud.example.com/ HTTP/1.1 200 OK (...)
// restartujemy (znaczy, zatrzymujemy, wyprtalamy, odpalamy od zera), bo np. // przebudowaliśmy kontener
# docker-compose stop owncloud Stopping serverconfig_owncloud_1...
# docker-compose rm owncloud Going to remove serverconfig_owncloud_1 Are you sure? [yN] y Removing serverconfig_owncloud_1...
# docker-compose up -d --no-recreate owncloud Creating serverconfig_owncloud_1...
// chodzą? // chodzą.
# docker-compose ps | egrep '(nginx|owncloud)' serverconfig_nginx_1 /run.sh Up serverconfig_owncloud_1 /bin/bash /var/lib/php5/start Up
// widzą się? // nopenopenope
$ curl -kI https://owncloud.occrp.org/ HTTP/1.1 502 Bad Gateway
// przekręcamy nginxa
# docker-compose stop nginx Stopping serverconfig_nginx_1...
# docker-compose rm nginx Going to remove serverconfig_nginx_1 Are you sure? [yN] y Removing serverconfig_nginx_1...
# docker-compose up -d --no-recreate nginx Creating serverconfig_nginx_1...
// działa? // działa.
$ curl -kI https://owncloud.occrp.org/ HTTP/1.1 200 OK
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Fun fact: podczas przekręcania ownclouda zmienia się jego adres IP. Jeśli ręcznie (czy jakimś sedem) uaktualnię adres IP ownclouda w /etc/hosts w kontenerze nginxa, wsio hula -- ale tylko jeśli *nie* używam dockera z `--icc=false`.
Rzecz jasna, chcę używać dockera z --icc=false.
Generalnie chodzi o to, bym nie musiał przekręcać nginxa po przekręceniu php-fpm. Chwilowy downtime jednego z kilkudziesięciu (don't get me started) kontenerów php-fpm to *nie* jest problem, ale chwilowy downtime nginxa (przez którego wszystkie zapytania do wszystkich kontenerów idą) -- to już jest le fu-.