Wpis z mikrobloga

Chciałbym uruchomić aplikację PHP w kontenerze Docker. O ile przy tworzeniu Dockerfile nie ma problemu z pobraniem kontenera nginx, to zastanawiam się jak do tego kontenera dodać również php7.0-fpm.

Czy można dodać kilka instrukcji FROM tak aby razem ze sobą współpracowały?

#docker #nginx
  • 10
Problemem było, to że w docker-compose nie miałem zmapowanego katalogu.
Teraz mam :
...
php:
image: php:7.1-fpm
volumes:
- ./app:/var/www/html

Zastanawia mnie jeszcze jedna rzecz.
Jeżeli mam serwer i chciałbym na nim uruchomić kilka kontenerów z aplikacjami, to czy dla każdej aplikacji powinien być osobno nginx, czy 1 kontener ngixna i jakoś mapowane katalogi?

Czy nginx dla każdej aplikacji?
Aktualnie mój docker-compse wyglada tak: klik
Dockerfile: klik

Czy dla każdej aplikacji powinno
Czy dla każdej aplikacji powinno to tak mniej więcej wyglądać?

Jak w takim razie skonfigurować aby określone domeny były przekierowane na odpowiedni kontener?


@pepepanpatryk: Ja używam osobnego IP per usługa i mapuję porty razem z IP. Nie ma wtedy problemów z certyfikatami SSL oraz z separacją usług w dockerze.
@yggdrasil @ImReally: Natrafiłem na pewien problem.
Aktualnie mój docker-compose wygląda tak:
klik

Został tak przerobiony, aby oba kontenery(aplikacja, oraz php-fpm miały dostęp do kodu).
Problem w tym, że nawet kiedy buduję kontener, takim Dockerfile-m
klik, to tak naprawdę zawartość folderu /var/www/html jest podmieniania na to co znajduje się w volume "data" i w konsekwencji tego, uruchamiam aplikacje de facto nie zaktualizowaną o nowy kod.

Rozwiązaniem tego jest montowanie kodu, do
@ImReally: Robisz to ręcznie czy masz to zautomatyzowane jakoś?
Chciałem zrobić jakieś CI, myślałem żeby to uruchomić tak, że cały kontener budowałby mi się na travisie, później push do docker huba i aktualizacja na produkcji, poprzez hooka podpiętego do serwera na którym działa rancher, dlatego właśnie cały kontener z kodem był dla mnie wygodny, a tak to muszę jeszcze jakoś zadbać, żeby kod na produkcji został zaktualizowany.
@ImReally: Póki co rozwiązałem to w taki sposób, że podczas uruchamiania kontenera, nie odpalam od razu nginxa, ale jako entrypoint mam skrypt, który kopiuje mi zawartość z kontenera do zmapowanego katalogu. Działa. Aczkolwiek wywala się coś przy prawach dostępu do /var/cache(symfony) ale to ogarnę :)
@pepepanpatryk: Całe repo mam w git. W przypadku deploymentu na produkcję robię git pull i uruchamiam skrypt, który przez docker-compose restartuje mi kontener z aplikacją (u mnie musi pójść gulp, który kompiluje kod do postaci produkcyjnej). I z grubsza tyle.