Właśnie zaczynam pracę z Dockerem i Richtem, teraz próbuję wymyślić, jak skonfigurować moje pierwsze dokowane środowisko Apache 2 / PHP. Do tej pory korzystałem z pełnych maszyn wirtualnych systemu Linux, w których korzystałem z plików dziennika zapisywanych w katalogu / var / log / apache2, a następnie korzystałem z polecenia „logrotate”, aby każdego dnia przeskakiwać do nowego pliku.
Pliki dziennika były używane głównie do natychmiastowego wykrywania błędów (tj. Zaloguj się na serwerze i używaj mniej do otwierania bieżących plików access.log i error.log) oraz do fail2ban.
Jeśli mam rację, nie jest to możliwe w środowisku Dockera - głównie dlatego, że zwykle nie można zalogować się do kontenerów, aby przejrzeć dzienniki. Również dzienniki zostaną utracone, jeśli pojemnik zostanie usunięty.
Więc: Jaka jest najczęstsza metoda pracy z / emulate / replace access.log / error.log w takiej sytuacji? Jakie są typowe rozwiązania dla środowisk produkcyjnych i programistycznych?
Moje dotychczasowe pomysły obejmują używanie udziału NFS (powolne i mogą powodować kolizje nazw plików, jeśli nie są ostrożne) i logstash (nie jesteś pewien, czy jest to warte wysiłku i wykonalności dla mniejszych witryn, a nawet środowisk deweloperskich ?), Ale jestem pewien, że mądrzy ludzie wymyśliłeś lepsze rozwiązania?
Nie jestem pewien, czy to robi różnicę, ale obecnie opieram swój obraz Dockera na php: 5.6-apache .
docker attach <container name>
jest to dobry sposób, aby zobaczyć standardowe wyjście ze swojego kontenera. Ale uwaga: jeśli zrobisz ctrl + d lub ctrl + c, to ZAKOŃCZY (sigkill) twoje bieżące zadanie. Musisz więc odłączyć go prawidłowo za pomocą klawisza Escapectrl+p+q
. Jeśli chcesz po prostu wykonać powłokę w kontenerze, wolę użyćexec
powyższego polecenia.