2014-12-16 13 views
7

TL; DR: kompozytor instalacja nie powiedzie się, gdy po zainstalowaniu skrypty nie widzi serwera MySQLkompozytor instalacja nie powiedzie się, gdy nie można zobaczyć w bazie mysql

buduję pojemnik Döcker dla aplikacji Symfony, i podczas kompilacji zrobić coś takiego

RUN export SYMFONY_ENV=prod && \ 
    composer install --prefer-dist --optimize-autoloader 

Pod koniec instalacji, nie jest on z tego

Generating optimized autoload files 


    [Doctrine\DBAL\Exception\DriverException]                 
    An exception occured in driver: SQLSTATE[HY000] [2003] Can't connect to MySQL server on '127.0.0.1' (111) 

    [Doctrine\DBAL\Driver\PDOException]           
    SQLSTATE[HY000] [2003] Can't connect to MySQL server on '127.0.0.1' (111) 

    [PDOException]                
    SQLSTATE[HY000] [2003] Can't connect to MySQL server on '127.0.0.1' (111) 


Script Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::clearCache handling the post-install-cmd event terminated with an exception 

    [RuntimeException]               
    An error occurred when executing the "'cache:clear --no-warmup'" command. 

teraz mogłem u se --no-scripts, ale prawdopodobnie po uruchomieniu kontenera będę musiał ponownie uruchomić composer install i chciałbym, aby mój kontener był jak najbardziej gotowy.

Ponieważ nie znalazłem wielu odniesień do podobnych problemów, może być coś w mojej aplikacji z winy, i podejrzewam, że będę odpowiadał na moje własne pytanie. Miałem nadzieję, że opisując to, odkryję to. Niestety, nie mam. Wskazówki są mile widziane :)

+0

nie używasz połączenia db w swoim projekcie? – Matteo

+1

tak, ale nie jest znana/dostępna po zbudowaniu kontenera –

+0

[tutaj] (https://speakerdeck.com/ubermuda/a-multi-container-symfony2-setup-with-docker?slide=31) pierwsza instalacja/uruchom usługi przed zadaniem kompozytora. Nadzieję, że ta pomoc – Matteo

Odpowiedz

5

Doctrine wprowadziła kod, który próbował z chęcią automatycznie wykrywać rzeczy z bazy danych.

Rozwiązaniem jest po prostu przekazanie Doctrine wersji docelowego serwera, np.

doctrine: 
    dbal: 
     default_connection: default 
     connections: 
      default: 
       dbname: Symfony2 
       user:   root 
       password: null 
       host:   localhost 
       driver:  pdo_mysql 
       server_version: 5.6 

Zobacz https://github.com/doctrine/DoctrineBundle/issues/351#issuecomment-75456547

+0

Czy miałeś szczęście instalując swoje zależności bez skryptów poinstalacyjnych próbujących połączyć się z bazą danych? – Onema

+0

@Neema zobacz zaktualizowaną odpowiedź! –

Powiązane problemy