Erreur création de la base de donnés par Docker

Bonjour à tous,

J’ai installé FabManager en local sur mon environnement Linux 16.04. En suivant le tutotoriel en mode production, j’ai une erreur que je n’arrive pas à corriger lors de l’installation de FabManager par docker.
En exécutant la commande :
docker-compose run --rm fabmanager bundle exec rake db:create # create the database

J’obtiens :
Starting fabmanager_postgres_1 …
Starting fabmanager_postgres_1 … done
Starting fabmanager_elasticsearch_1 … done
could not connect to server: Connection refused
Is the server running on host « 127.0.0.1 » and accepting
TCP/IP connections on port 5432?
… (pleins de lignes de code comme /usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.16.1/lib/bundler/cli.rb:27:in `dispatch’)
Couldn’t create database for {« adapter »=>« postgresql », « encoding »=>« unicode », « pool »=>25, « username »=>« postgres », « password »=>« sleede », « host »=>« 127.0.0.1 », « database »=>« fablab_production »}

Alors, quand je vérifie que le port est ouvert par la commande : nmap -sT -p 5432 127.0.0.1
J’ai :
Starting Nmap 7.01 ( https://nmap.org ) at 2018-02-13 16:03 CET
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00033s latency).
PORT STATE SERVICE
5432/tcp open postgresql

Nmap done: 1 IP address (1 host up) scanned in 0.05 seconds
Le port me semble donc ouvert à la connexion.
Toutefois étant curieuse, j’ai continué entièrement le tuto en gardant les configurations du fichier config/env donc POSTGRES=postgres; REDIS=redis; ELASTICSEARCH=elasticsearch, et j’arrive à obtenir la page du FabManager mais du coup sans pouvoir accéder à ma base de données (aucun utilisateur ne peut être rentré par ex).
Je veux donc rectifier en rentrant l’adresse IP de mon serveur local, mais j’ai l’erreur expliqué ci-dessus. Je ne comprends pas son origine et je n’arrive pas à m’en dépatouiller.

Merci de votre aide,

Laure

Bonjour Laure,

C’est assez étrange car POSTGRES=postgres indique l’utilisation du container docker postgre, or les messages de logs semblent indiquer que l’application cherche à se connecter sur une base de données située à 127.0.0.1 …
Peux-tu vérifier que tous tes containers tournent correctement avec docker ps ?

Tu peux également vérifier la syntaxe de ton fichier docker-compose.yml, notamment la ligne 18 (depends_on: - postgres) et la ligne 23 (postgres:).

Tiens nous au courant.

Bonjour Sylvain,

Pour la commande docker ps, j’obtiens
root@innovlab-VirtualBox:/apps/fabmanager# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f04ea6c14987 nginx:1.9 « nginx -g 'daemon … » 2 weeks ago Up 6 minutes 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp fabmanager_nginx_1
ed6e6427e831 sleede/fab-manager « /usr/bin/supervisord » 2 weeks ago Up 6 minutes 3000/tcp fabmanager_fabmanager_1
a49a8c04f7a5 postgres:9.4 « docker-entrypoint… » 2 weeks ago Up 6 minutes 5432/tcp fabmanager_postgres_1
8e9c60cf55ad elasticsearch:1.7 « /docker-entrypoin… » 2 weeks ago Up 6 minutes 9200/tcp, 9300/tcp fabmanager_elasticsearch_1
c682e9170644 redis:3.0 « docker-entrypoint… » 2 weeks ago Up 6 minutes 6379/tcp fabmanager_redis_1

Et sur docker_compose.yml j’ai comme début :
fabmanager:
image: sleede/fab-manager
environment:
RAILS_ENV: production
RACK_ENV: production
env_file:
- ${PWD}/config/env
volumes:
- ${PWD}/public/assets:/usr/src/app/public/assets
- ${PWD}/public/uploads:/usr/src/app/public/uploads
- ${PWD}/invoices:/usr/src/app/invoices
- ${PWD}/exports:/usr/src/app/exports
- ${PWD}/log:/var/log/supervisor
- ${PWD}/plugins:/usr/src/app/plugins
depends_on:
- postgres
- redis
- elasticsearch
restart: always

postgres:
image: postgres:9.4
volumes:
- ${PWD}/postgresql:/var/lib/postgresql/data
restart: always

Vois-tu quelque chose de faux ?

Merci de ton aide,

Laure

Non, bizarre, tout semble correct …
Tu peux essayer de rentrer dans le container pour faire quelques vérifications :

docker exec -it fabmanager_postgres_1 bash
ps aux 
# USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
# postgres     1  0.0  0.1 226656 20292 ?        Ss   08:43   0:00 postgres
cat /var/lib/postgresql/data/pg_hba.conf
# ...
# host all all 0.0.0.0/0 trust
psql -U postgres

Puis dans l’invité postgres :

\l
#                                        List of databases
#           Name          |  Owner   | Encoding |  Collate   |   Ctype    |   Access privileges   
# ------------------------+----------+----------+------------+------------+-----------------------
#  fabmanager_production  | postgres | UTF8     | en_US.utf8 | en_US.utf8 |