2016-04-18 5 views
3

i für bottled-water an der Github MD-Datei sah es zu benutzen Docker mit und ich habe ein Problem in Bezug auf postgresql läuftDocker-compose psql konnte keine Verbindung zum Server

wenn ich docker-compose run --rm postgres psql laufen bekomme ich den Fehler

/usr/local/lib/python2.7/dist-packages/requests/packages/urllib3/util/ssl_.py:90: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning. 
    InsecurePlatformWarning 
/usr/local/lib/python2.7/dist-packages/requests/packages/urllib3/util/ssl_.py:90: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning. 
    InsecurePlatformWarning 
/usr/local/lib/python2.7/dist-packages/requests/packages/urllib3/util/ssl_.py:90: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning. 
    InsecurePlatformWarning 
/usr/local/lib/python2.7/dist-packages/requests/packages/urllib3/util/ssl_.py:90: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning. 
    InsecurePlatformWarning 
psql: could not connect to server: No such file or directory 
    Is the server running locally and accepting 
    connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"? 

ist dies die Config für postgres und psql in meiner docker-compose.yml Datei

postgres: 
    build: ./tmp 
    dockerfile: Dockerfile.postgres 
    hostname: postgres 
    ports: 
    - '45432:5432' 

psql: 
    image: postgres:9.4 
    links: 
    - postgres 
    command: 'sh -c ''exec psql -h "localhost" -p "5432" -U postgres''' 

und das ist meine pg_hba.conf Datei

local all    postgres        peer 

# TYPE DATABASE  USER   ADDRESS     METHOD 

# "local" is for Unix domain socket connections only 
local all    all          trust 
# IPv4 local connections: 
host all    all    127.0.0.1/32   md5 
# IPv6 local connections: 
host all    all    ::1/128     md5 
# Allow replication connections from localhost, by a user with the 
# replication privilege. 
#local replication  postgres        peer 
#host replication  postgres  127.0.0.1/32   md5 
#host replication  postgres  ::1/128     md5 

Ich habe jetzt Tage in diesem gewesen wäre jede Art von Hilfe dankbar! Danke

+0

Siehe http://stackoverflow.com/questions/29905953/how-to-correctly-link-php-fpm-and-nginx-docker-containers-together – 00500005

Antwort

5

Dies ist eine schlecht dokumentierte Funktion von Docker compose, wie es mir warf Wache als gut. Es ist in der documentation. Sehen Sie, ob Sie es finden können.

Wenn zwei Container verknüpft sind, werden sie über den virtuellen Hostnamen verbunden. Wenn Sie /etc/hosts von Ihrem psql Conainer überprüfen, finden Sie eine Zeile für Aliase postgres {foldername}_postgres_1, wobei {foldername} der Name des übergeordneten Ordners Ihres Docker-Compose-Projekts ist.

Um den verknüpften Container zu verwenden, verwenden Sie den Hostnamen postgres.

Für Ihr Beispiel:

psql: 
    image: postgres:9.4 
    links: 
    - postgres 
    command: 'sh -c ''exec psql -h "postgres" -p "5432" -U postgres''' 

Sie können Ihre Codebasis konfigurieren, dies auch zu nutzen. Wenn Sie den Code außerhalb eines verknüpften Containers ausführen möchten, ändern Sie einfach die Host-Datei /etc/hosts so, dass sie auf den gewünschten Dienst verweist.