[Résolu] Accès Navigateur : port 3000 (install | config | paramétrage)

Bonjour,
ma commande $ docker-compose up
m’indique l’utilisation du port 6379
comment configurer la redirection sur le port 3000 ?

résultat sur ubuntu xenial
$ docker-compose up
Recreating fabmanager_redis_1
Recreating fabmanager_elasticsearch_1
Recreating fabmanager_postgres_1
Recreating fabmanager_fabmanager_1
Recreating fabmanager_nginx_1
Attaching to fabmanager_postgres_1, fabmanager_redis_1, fabmanager_elasticsearch_1, fabmanager_fabmanager_1, fabmanager_nginx_1
postgres_1 | LOG: database system was shut down at 2017-11-03 14:47:56 UTC
postgres_1 | LOG: MultiXact member wraparound protections are now enabled
postgres_1 | LOG: database system is ready to accept connections
postgres_1 | LOG: autovacuum launcher started
redis_1 | 1:C 06 Nov 09:37:31.615 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
redis_1 | .- `. `_. ''-._ Redis 3.0.7 (00000000/0) 64 bit redis_1 | ( ' , .-` | `, ) Running in standalone mode redis_1 | |`-._`-...-` __...-.-.|‹ _.-'| Port: 6379 redis_1 | | -._ `._ / _.- › | PID: 1
redis_1 | 1:M 06 Nov 09:37:31.618 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
redis_1 | 1:M 06 Nov 09:37:31.618 # Server started, Redis version 3.0.7
redis_1 | 1:M 06 Nov 09:37:31.618 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add ‹ vm.overcommit_memory = 1 › to /etc/sysctl.conf and then reboot or run the command ‹ sysctl vm.overcommit_memory=1 › for this to take effect.
redis_1 | 1:M 06 Nov 09:37:31.618 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command ‹ echo never > /sys/kernel/mm/transparent_hugepage/enabled › as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
redis_1 | 1:M 06 Nov 09:37:31.619 * DB loaded from disk: 0.001 seconds
redis_1 | 1:M 06 Nov 09:37:31.619 * The server is now ready to accept connections on port 6379
fabmanager_1 | /usr/lib/python2.7/dist-packages/supervisor/options.py:296: UserWarning: Supervisord is running as root and it is searching for its configuration file in default locations (including its current working directory); you probably want to specify a « -c » argument specifying an absolute path to a configuration file for improved security.
fabmanager_1 | 'Supervisord is running as root and it is searching ’
fabmanager_1 | 2017-11-06 09:37:33,218 CRIT Set uid to user 0
fabmanager_1 | 2017-11-06 09:37:33,218 WARN Included extra file « /etc/supervisor/conf.d/fablab.conf » during parsing
fabmanager_1 | 2017-11-06 09:37:33,238 INFO RPC interface ‹ supervisor › initialized
fabmanager_1 | 2017-11-06 09:37:33,238 CRIT Server ‹ unix_http_server › running without any HTTP authentication checking
fabmanager_1 | 2017-11-06 09:37:33,239 INFO supervisord started with pid 1
elasticsearch_1 | [2017-11-06 09:37:34,237][INFO ][node ] [Karkas] version[1.7.6], pid[1], build[c730b59/2016-11-18T15:21:16Z]
elasticsearch_1 | [2017-11-06 09:37:34,239][INFO ][node ] [Karkas] initializing …
fabmanager_1 | 2017-11-06 09:37:34,240 INFO spawned: ‹ app › with pid 8
fabmanager_1 | 2017-11-06 09:37:34,241 INFO spawned: ‹ worker › with pid 9
elasticsearch_1 | [2017-11-06 09:37:34,399][INFO ][plugins ] [Karkas] loaded [], sites []
elasticsearch_1 | [2017-11-06 09:37:34,455][INFO ][env ] [Karkas] using [1] data paths, mounts [[/usr/share/elasticsearch/data (/dev/mapper/flfabmanager–vg-root)]], net usable_space [43.6gb], net total_space [56.4gb], types [ext4]
fabmanager_1 | 2017-11-06 09:37:35,243 INFO success: app entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
fabmanager_1 | 2017-11-06 09:37:35,243 INFO success: worker entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
elasticsearch_1 | [2017-11-06 09:37:38,920][INFO ][node ] [Karkas] initialized
elasticsearch_1 | [2017-11-06 09:37:38,920][INFO ][node ] [Karkas] starting …
elasticsearch_1 | [2017-11-06 09:37:39,158][INFO ][transport ] [Karkas] bound_address {inet[/0:0:0:0:0:0:0:0:9300]}, publish_address {inet[/172.19.0.3:9300]}
elasticsearch_1 | [2017-11-06 09:37:39,240][INFO ][discovery ] [Karkas] elasticsearch/7anHRoM6RsKllTzefZ028w
elasticsearch_1 | [2017-11-06 09:37:43,065][INFO ][cluster.service ] [Karkas] new_master [Karkas][7anHRoM6RsKllTzefZ028w][5655a7d0978b][inet[/172.19.0.3:9300]], reason: zen-disco-join (elected_as_master)
elasticsearch_1 | [2017-11-06 09:37:43,134][INFO ][http ] [Karkas] bound_address {inet[/0:0:0:0:0:0:0:0:9200]}, publish_address {inet[/172.19.0.3:9200]}
elasticsearch_1 | [2017-11-06 09:37:43,135][INFO ][node ] [Karkas] started
elasticsearch_1 | [2017-11-06 09:37:43,150][INFO ][gateway ] [Karkas] recovered [0] indices into cluster_state
fabmanager_1 | 2017-11-06 09:37:45,255 INFO exited: worker (exit status 1; not expected)
fabmanager_1 | 2017-11-06 09:37:45,265 INFO spawned: ‹ worker › with pid 20
fabmanager_1 | 2017-11-06 09:37:45,266 INFO exited: app (exit status 1; not expected)

$ docker-compose up -d
Starting fabmanager_elasticsearch_1
Starting fabmanager_redis_1
Starting fabmanager_postgres_1
Starting fabmanager_fabmanager_1
Starting fabmanager_nginx_1

$ docker-compose ps
Name Command State Ports
fabmanager_elast /docker- Up 9200/tcp,
icsearch_1 entrypoint.sh elas … 9300/tcp
fabmanager_fabmanager_1 /usr/bin/supervisord Up 3000/tcp
fabmanager_fabmanager_run_2 /usr/bin/supervisord Up 3000/tcp
fabmanager_nginx_1 nginx -g daemon Up 0.0.0.0:443->443
off; /tcp, 0.0.0.0:80
->80/tcp
fabmanager_postgres_1 docker-entrypoint.sh Up 5432/tcp
postgres
fabmanager_redis_1 docker-entrypoint.sh Up 6379/tcp
redis …

Salut,

C’est redis qui se lance sur le port 6379, pas fab-manager. Pour changer le port de redis tu peux utiliser la directive port dans le fichier redis.conf mais il te faudra rajouter un mapping dans le fichier docker-compose.yml pour que celui-ci soit pris en compte. Tu peux également regarder ici où sont décrites les différentes façon de configurer redis, cependant il faut savoir que le port utilisé reste confiné à l’intérieur du container et donc n’utilise pas les ports de ton serveur.

Si c’est fab-manager dont tu veux changer le port, sache que c’est le container nginx qui se charge se rediriger l’application sur le bon port, par défaut 80 (ou 443 en SSL). Cela peut être modifié en éditant le fichier docker-compose.yml.

Bonne journée

Merci de ta réponse Sylvain,
je comprends de voir sous docker-compose.yml ( et pas sur redis.conf)

en remplaçant pour nginx :

ports:
       - "80:80"
       - "443:443"

par :

ports:
- « 3000:3000 »

j’obtiens l’erreur
$ docker-compose up

ERROR: for nginx Cannot start service nginx: driver failed programming external connectivity on endpoint fabmanager_nginx_1 (61a2790d4f09faae9ee27bad6699b576d3028a57728fb513109d3abf27fd37c1): Error starting userland proxy: listen tcp **0.0.0.0:**3000: bind: address already in use
ERROR: Encountered errors while bringing up the project.

est-ce un conflit avec le fabmanager_fabmanager_1 qui est lui même en 3000 ?
n’est pas nginx qui redirige le port 80 vers le port 3000 du fabmanager ?
mais pourquoi est-il en 0.0.0.0 ?

merci de votre aide
:wink:

Non, si tu veux mettre fab-manager sur le port 3000, tu dois mettre :

  - "80:3000"

Pour connecter le port 80 du container docker au port 3000 de ta machine

1 « J'aime »

évident !-) merci
existe-t-il une doc technique sur la syntaxe du docker-compose.yml ?

cela donne du mieux :
$ docker-compose ps

 _Name                                               Command                          State              Ports_

fabmanager_elasticsearch_1 /docker-entrypoint.shelas … Up 9200/tcp,9300/tcp
fabmanager_fabmanager_1 /usr/bin/supervisord Up 3000/tcp
fabmanager_fabmanager_run_2 /usr/bin/supervisord Up 3000/tcp
fabmanager_nginx_1 nginx -g daemon off; Up 0.0.0.0:80->3000 /tcp, 443/tcp, 80/tcp
fabmanager_postgres_1 docker-entrypoint.sh postgres Up 5432/tcp
fabmanager_redis_1 docker-entrypoint.sh redis … Up 6379/tcp

pour un test en direct, j’obtiens
$ wget http://localhost

Résolution de localhost (localhost)… ::1, 127.0.0.1
Connexion à localhost (localhost)|::1|:80… connecté.
requête HTTP transmise, en attente de la réponse… Erreur de lecture (Connexion ré-initialisée par le correspondant) dans les en-têtes.Nouvel essai.
Connexion à localhost (localhost)|::1|:80… connecté.
requête HTTP transmise, en attente de la réponse… Aucune donnée reçue.Nouvel essai

Je trouve dans ./log/app-stderr.log

from bin/rails:4:in <main>' /usr/local/bundle/gems/activerecord-4.2.5/lib/active_record/connection_adapters/postgresql_adapter.rb:651:in initialize’: could not connect to server: Connection refused (PG::ConnectionBad)
Is the server running on host « localhost » (::1) and accepting
TCP/IP connections on port 5432?
could not connect to server: Connection refused

et dans ./log/worker-stderr.log

could not connect to server: Connection refused
Is the server running on host « localhost » (::1) and accepting
TCP/IP connections on port 5432?
could not connect to server: Connection refused
Is the server running on host « localhost » (127.0.0.1) and accepting
TCP/IP connections on port 5432?

d’ou peux provenir ce refus de connexion (c’est identique sur le compte root et utilisateur) ?
Je ne suis plus tout à fait sur le même sujet, mais dans sa continuité,
est-ce que je change de sujet?

Salut,

Voici la documentation de référence sur le fichier docker-compose.yml : Compose file version 2 reference | Docker Documentation

Concernant ton test avec wget, il faut que tu requêtes http://localhost:3000 puisque tu as redirigé fab-manager vers ce port.

1 « J'aime »

vu la redirection dans la config, je pensais qu’elle était effectuée
merci

$ wget localhost:3000

Résolution de localhost (localhost)… ::1, 127.0.0.1
Connexion à localhost (localhost)|::1|:3000… échec : Connexion refusée.
Connexion à localhost (localhost)|127.0.0.1|:3000… connecté.
requête HTTP transmise, en attente de la réponse… 200 Pas d’en-tête, HTTP/0.9 supposé
Taille : non indiqué Enregistre : «index.html.20»
index.html.20 [ <=> ] 225 --.-KB/s

si je procède à
$ wget 127.0.0.1:3000
je n’ai pas la connexion refusée en localhost
ce qui suit tourne en boucle sans me fournit de fichier html

ou une autre manière de le dire :
$ curl 127.0.0.1:3000

-ERR wrong number of arguments for ‹ get › command
-ERR unknown command ‹ Host: ›
-ERR unknown command ‹ User-Agent: ›
-ERR unknown command ‹ Accept: ›

mes fichiers de log précédent sont similaires
donc l’accès semble bon mais sans réponse
auriez-vous une piste de recherche ?

As-tu bien configuré tes variables d’environnement, comme indiqué ici ?

Une impression de déjà vu et de revenir en arrière !-)
fichier ./config/env (les variables principales)

POSTGRES_HOST=127.0.0.1
REDIS_HOST=127.0.0.1
ELASTICSEARCH_HOST=127.0.0.1
SECRET_KEY_BASE= xxxx…xxx

les fichiers log ne devraient ils pas m’en dire plus sur la configuration ?

Il ne faut pas mettre 127.0.0.1 mais les adresses ou les noms de tes containers respectifs pour postgre / redis / elasticsearch.
A savoir que les valeurs par défaut devraient fonctionner correctement sans modification :

POSTGRES_HOST=postgres
REDIS_HOST=redis
ELASTICSEARCH_HOST=elasticsearch

Merci !-)
cela répond mieux en tout point

docker-compose run --rm fabmanager bundle exec rake db:setup
docker-compose run --rm fabmanager bundle exec rake assets:precompile
docker-compose run --rm fabmanager bundle exec rake fablab:es_build_stats
docker-compose up -d
docker-compose ps

Les fichiers /log semblent bon, puis
$ sudo wget localhost:3000
et cela dans les log

app-stderr.log
/usr/src/app/app/controllers/users/omniauth_callbacks_controller.rb:4:in <class:OmniauthCallbacksController>': undefined method strategy_name’ for #AuthProvider::SimpleAuthProvider:0x00000008c60e00> (NoMethodError)
worker-stderr.log
undefined method `strategy_name’ for #AuthProvider::SimpleAuthProvider:0x00000009959d00>
supervisord.log
WARN Included extra file « /etc/supervisor/conf.d/fablab.conf » during parsing
(aucune trace de ce fichier à cet endroit ?)

mon fichier index.html donne comme résultat

-ERR wrong number of arguments for ‹ get › command
-ERR unknown command ‹ User-Agent: ›
-ERR unknown command ‹ Accept: ›
-ERR unknown command ‹ Accept-Encoding: ›
-ERR unknown command ‹ Host: ›
-ERR unknown command ‹ Connection: ›

et j’ai repris la configuration initiale

désolé pour la loop !-)
ai-je un endroit ou chercher mes erreurs ?

Non, il ne faut pas faire de rake db:setup (c’est bien précisé au point 8), la documentation indique quelles sont les commandes à lancer (sans oublier de remplacer les xxx)

Je me permets de rester sur le même topic, avec un problème d’accès au port 3000.

J’ai réinstaller un système ubuntu xenial avec installation de docker et docker-compose
pas de compte utilisateur dans le groupe docker
et repris une installation complète avec les fichiers de configuration :

./config/env # avec le paramétrage vu ensemble précédemment
./config/nginx/fabmanager.conf # sans ssl
./docker-compose.yml

j’obtiens avec
$ curl -i 127.0.0.1:3000

curl: (7) Failed to connect to 127.0.0.1 port 3000: Connexion refusée

et
$ curl -i 127.0.0.1

un résultat en html : We’re sorry, but something went wrong. If you are the application owner check the logs for more information.

pour informations :

$ docker-compose ps

fabmanager_elasticsearch_1 /docker-entrypoint.sh elas … Up 9200/tcp, 9300/tcp
fabmanager_fabmanager_1 /usr/bin/supervisord Up 3000/tcp
fabmanager_nginx_1 nginx -g daemon off; Up 0.0.0.0:443->443/tcp, 0.0.0.0:80->80/tcp
fabmanager_postgres_1 docker-entrypoint.sh postgres Up 5432/tcp
fabmanager_redis_1 docker-entrypoint.sh redis … Up 6379/tcp

les ports :
$ lsof -iTCP -P -n

postgres 1116 postgres 6u IPv6 16518 0t0 TCP [::1]:5432 (LISTEN)
postgres 1116 postgres 7u IPv4 16519 0t0 TCP 127.0.0.1:5432 (LISTEN)
docker-pr 1650 root 4u IPv6 17930 0t0 TCP *:443 (LISTEN)
docker-pr 1709 root 4u IPv6 17951 0t0 TCP *:80 (LISTEN)

dans les logs app-stderr.log et worker-stderr.log

/usr/src/app/app/controllers/users/omniauth_callbacks_controller.rb:4:in <class:OmniauthCallbacksController>': undefined method strategy_name’ for #AuthProvider::SimpleAuthProvider:0x00000000077e3068 (NoMethodError)

quel log ou commande me donnerait une réponse ?
merci de la votre

D’après ce message d’erreur, l’initialisation de la base de données n’a pas été faite correctement. Voir ici

1 « J'aime »

ok merci
la commande effectuée :
$ docker-compose run --rm fabmanager bundle exec rake db:create
avec comme résultat

fablab_production already exists

as-t-on besoin du fichier de configuration ./config/database.yml ?

puis la commande suivante :
$ docker-compose run --rm fabmanager bundle exec rake db:migrate

sans résultat bon ou mauvais

Quel fichier de log me permet d’évaluer le résultat de ces deux commandes ?

Le résultat de ces commandes devrait se trouver dans app-stdout.log (ou app-stderr.log s’il y a eu des erreurs). Dans tous les cas, il y a 3 commandes à lancer, il ne faut pas oublier (en remplaçant les xxx) :

 docker-compose run --rm -e ADMIN_EMAIL=xxx ADMIN_PASWORD=xxx fabmanager bundle exec rake db:seed

Sinon tu auras toujours le même message d’erreur

merci pour ton suivi
je passe donc à cette 3ème commande, pour la comprendre également

$ docker-compose run --rm -e ADMIN_EMAIL=[admin@mondomaine.fr] ADMIN_PASWORD=[motdepasseperso] fabmanager bundle exec rake db:seed

avec ce résultat (aucun fichier dans ./log) :

ERROR: No such service: ADMIN_PASSWORD=[motdepasseperso]

le fichier de configuration qui contient un compte email :

./config/env
DEFAULT_MAIL_FROM=[web@mondomaine.fr]
ADMIN_EMAIL=[admin@mondomaine.fr]
ADMIN_PASSWORD=[motdepasseperso]

Sans relance up
$ docker-compose ps a comme réponse :

fabmanager_elasticsearch_1 /docker-entrypoint.sh elas … Up 9200/tcp, 9300/tcp
fabmanager_postgres_1 docker-entrypoint.sh postgres Up 5432/tcp
fabmanager_redis_1 docker-entrypoint.sh redis … Up 6379/tcp

merci de ton soutien
:wink:

Salut,
Effectivement il y a une erreur dans la documentation … il faut écrire :

docker-compose run --rm -e ADMIN_EMAIL=xxx -e ADMIN_PASWORD=xxx fabmanager bundle exec rake db:seed

Comme cela, ça devrait marcher. Par ailleurs, tu peux supprimer les variables ADMIN_EMAIL et ADMIN_PASSWORD de ton fichier env, elles ne servent à rien à cet endroit, et c’est mieux en terme de sécurité …

modification du fichier de conf env
et résultat de cette 3eme commande corrigée :

Creating network « fabmanager_default » with the default driver
Creating fabmanager_redis_1
Creating fabmanager_postgres_1
Creating fabmanager_elasticsearch_1
[ActiveJob] Enqueued ActionMailer::DeliveryJob (Job ID: ad7de28e-16a9-4c71-b5fe-5dec75e4cc22) to Sidekiq(mailers) with arguments: « NotificationsMailer », « send_mail_by », « deliver_now », gid://fablab/Notification/1

suivi de :

docker-compose run --rm fabmanager bundle exec rake assets:precompile
docker-compose run --rm fabmanager bundle exec rake fablab:es_build_stats

j’ai un résultat html $ wget localhost (ça chauffe !-))
et sur $ wget localhost:3000

Connexion à localhost (localhost)|::1|:3000… échec : Connexion refusée.
Connexion à localhost (localhost)|127.0.0.1|:3000… échec : Connexion refusée.

J’ai relancé les commandes avec le fichier env selon les conseils de Sylvain

mais je me retrouve avec les mêmes résultats sur $ wget localhost et $ wget localhost:3000

pour informations :
$ docker-compose ps

fabmanager_elasticsearch_1 /docker-entrypoint.sh elas … Up 9200/tcp, 9300/tcp
fabmanager_fabmanager_1 /usr/bin/supervisord Up 3000/tcp
fabmanager_nginx_1 nginx -g daemon off; Up 0.0.0.0:443->443/tcp, 0.0.0.0:80->80/tcp
fabmanager_postgres_1 docker-entrypoint.sh postgres Up 5432/tcp
fabmanager_redis_1 docker-entrypoint.sh redis … Up 6379/tcp

access.log

172.18.0.1 - - [15/Nov/2017:09:53:17 +0000] « GET / HTTP/1.1 » 200 5213 « - » « Wget/1.17.1 (linux-gnu) » « - »
ip de mon serveur : 172.16.1.35

app-stdout.log

Puma starting in single mode…

  • Environment: production
  • Listening on tcp://0.0.0.0:3000
    Started GET « / » for 172.18.0.6 at 2017-11-15 09:53:17 +0000
    Processing by ApplicationController#index as / Rendered application/index.html.erb (5.6ms)
    Completed 200 OK in 7ms (Views: 4.8ms | ActiveRecord: 1.3ms | Elasticsearch: 0.0ms)

Essaye de relancer pour que les changements soient pris en compte :

docker-compose down
docker-compose up -d