• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Laravel Docker migracja

Object Storage Arubacloud
+1 głos
436 wizyt
pytanie zadane 30 kwietnia 2023 w PHP przez Ambroz Obywatel (1,840 p.)

Cześć.
Przyznam szczerzę, że już nie wiem jak z tym walczyć i mam nadzieję, że wy mi pomożecie.
Zainstalowałem laravel i docker z tego git'a: https://github.com/ucan-lab/docker-laravel
Następnie korzystając z tutoriala w necie pierwsza migracja przechodzi, ale kiedy próbuje migrować własne migracje to dostaje następujące błędy:
Proszę zauważyć, że są to 2 różne polecenia.
Pierwszą migracją robiłem tym poleceniem:

docker compose exec app php artisan migrate

image

image

W pliku php.ini-developer odkomentowałem: extension:pdo_mysql.

image image

2 odpowiedzi

+2 głosów
odpowiedź 30 kwietnia 2023 przez Arkadiusz Waluk Ekspert (287,950 p.)

Pierwsze polecenie (samo php artisan migrate) to złe podejście, ponieważ wywołujesz je wtedy na swoim lokalnym systemie, na lokalnej wersji PHP, a to może powodować różne problemy - różnice między wersjami z tym co jest w Dockerze, brak widoczności bazy danych itd. Poprawny kierunek to drugie, gdzie wykonujesz polecenie php artisan migrate w kontenerze Dockera o nazwie php. Odkomentowanie ręcznie rozszerzenia prawdopodobnie nie ma sensu, ponieważ jak widzę w obrazie instalowane i uruchamiane jest już rozszerzenie pdo_mysql, dokładnie tutaj.

Zerknąłbym na konfigurację połączenia bazy w Laravelu, w teorii w docker-compose.yml ustawiane są zmienne środowiskowe z tymi danymi (od tego miejsca), ale sprawdziłbym czy masz plik .env z Laravela, jeśli tak czy te wartości są dobre, czy na pewno nie zmieniałeś żadnej z nich, generalnie czy dane dostępowe które widzi Laravel się zgadzają ze stanem faktycznym, bo po screenach zdaje się, jakby jednak nie było - masz tam 127.0.0.1 jako hosta, usera root itd.

Możesz też dla pewności sprawdzic logi po wykonaniu docker compose up - jeśli wykonałeś bez flagi -d to będą na tym samym terminalu, jeśli nie to można je podejrzeć np. przez docker compose logs. Zerknij tam czy baza (kontener db) na pewno się uruchomiła, czy nie pojawił się jakiś błąd itd. Ewentualnie można użyć np. docker ps aby sprawdzić jakie kontenery teraz działają. Można też spróbować ręcznie połączyć się z poziomu konsoli kontenera db do bazy danych (bez PHP czy Laravela), aby sprawdzić czy wprowadzone do Laravela dane faktycznie działają i baza odpowiada - docker compose exec db mysql -h db -u phper -p laravel - mniej więcej tak mogłoby to wyglądać, ale napisałem z głowy, więc musisz sprawdzić :)

+1 głos
odpowiedź 30 kwietnia 2023 przez Ambroz Obywatel (1,840 p.)

Dla wszystkich, którzy w przyszłości mieliby ten sam problem.

Okazało się, że w pliku .env źle był ustawiony DB_HOST.
W pliku jest DB_HOST=127.0.0.1 a powinno być DB_HOST=db. Oczywiście jest to w przypadku nie ingerowania w kontenery z waszej strony.

Z tropu zbiło mnie to, ze pierwsza migracja działała, więc pomimo błędu jakie wyświetlał się później nie skojarzyłem faktów.
Też jak pisał pan Arkadiusz Waluk, należy korzystać z polecenia:

docker compose exec app php artisan migrate 


To polecenie działa na kontenerze applikacji, która ma połączenie z bazą, jeśli dobrze skonfigurujemy DB_HOST.

P.S Kiedy zmienicie DB_HOST to musicie zniszczyć kontenery za pomocą:

docker compose down

Następnie przywrócić je poleceniem

docker compose up -d

lub bez flagi

docker compose up

 

Podobne pytania

+1 głos
2 odpowiedzi 433 wizyt
pytanie zadane 18 lipca 2018 w PHP przez Wojtek85 Nowicjusz (230 p.)
0 głosów
1 odpowiedź 360 wizyt
pytanie zadane 30 marca 2018 w PHP przez Adrian1999 Nałogowiec (34,570 p.)
0 głosów
1 odpowiedź 447 wizyt
pytanie zadane 21 listopada 2017 w PHP przez kordix Gaduła (3,910 p.)

92,555 zapytań

141,403 odpowiedzi

319,557 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...