3
votes

AdminMongo avec docker-compose ne fonctionne pas

J'essaie d'accéder à ma base de données mongo sur docker avec adminmongo .

Voici mon docker-compose.yml

$ docker ps
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS                 NAMES
9c27d4a89254        mrvautin/adminmongo   "/bin/sh -c 'node ap…"   38 seconds ago      Up 33 seconds       1234/tcp              iris_adminmongo_1_544d9a6f954c
2a7496a8c56a        mongo                 "docker-entrypoint.s…"   40 minutes ago      Up 38 seconds       6016/tcp, 27017/tcp   iris_mongo_1_7f00356a3adc

Quand je fais un docker-compose up , tout fonctionne très bien, adminmongo me renvoie également ceci: adminmongo_1_544d9a6f954c | adminMongo écoute sur l'hôte: http: // localhost: 1234

Mais quand je vais à localhost: 1234 mon navigateur me dit que cette page n'existe pas.

Voici ce qu'un docker ps me renvoie:

version: '3'
services:
  mongo:
    image: mongo
    volumes:
      - ~/data:/data/db
    restart: always
    expose:
      - 6016
  adminmongo:
    image: mrvautin/adminmongo
    expose:
      - 1234
    links:
      - mongo:mongo


0 commentaires

3 Réponses :


0
votes

Vous devez exposer votre service au monde extérieur comme ceci:

version: '3'
services:
  mongo:
    image: mongo
    volumes:
      - ~/data:/data/db
    restart: always
  adminmongo:
    image: mrvautin/adminmongo
    ports:
      - 1234:1234

Vous pouvez maintenant accéder à votre adminmongo par http: // localhost: 1234 .

Et vous n'avez pas à utiliser de liens ici. Depuis, compose crée un réseau et joint tous les services dans les fichiers de composition. Vous pouvez accéder à d'autres conteneurs avec leurs noms de service.


2 commentaires

Ça ne marche pas. J'ai une erreur avec exposer: - 1234: 1234 donc je l'ai changé en ports: - 1234: 1234 , maintenant je n'ai aucune erreur mais c'est toujours le même problème, je ne peux pas accéder à localhost: 1234


J'ai oublié de le changer en ports .



7
votes

J'ai trouvé deux problèmes ici:

1er: Il ne suffit pas d'exposer un port. exposer n'est que de la documentation, vous devez publier (lier) un port à l'hôte pour être accessible. Voici comment procéder:

version: '3'
services:
  mongo:
    image: mongo
    volumes:
      - ~/data:/data/db
    restart: always
    expose:
      - 6016
  adminmongo:
    image: mrvautin/adminmongo
    ports:
      - 1234:1234
    environment:
      - HOST=0.0.0.0

2ème: vous devez configurer adminmongo pour écouter 0.0. 0.0 car par défaut, il commence à écouter sur 127.0.0.1 et cela le rend accessible uniquement à l'intérieur du conteneur lui-même. Sur la page de documentation que vous avez incluse dans votre question, la Configuration indique que cela peut être fait en passant une variable d'environnement:

Tous les paramètres ci-dessus sont utilisables via l'environnement, ce qui le rend très pratique lorsque vous utilisez adminMongo comme conteneur de docker! lancez simplement docker run -e HOST = yourchoice -e PORT = 1234 ...

Puisque vous utilisez docker-compose , ceci se fait de la manière suivante:

environment:
  - HOST=0.0.0.0

Exemple de travail:

ports:
  - 1234:1234


3 commentaires

Ça marche ! Donc, si je comprends que faire un expose: - 1234: 1234 signifie que le docker expose le port local 1234 du conteneur à l'extérieur du conteneur afin qu'il soit accessible à localhost: 1234. Ai-je raison ? Modifier : Je comprends maintenant.


Les conteneurs «vivent» dans leur espace de noms réseau isolé. En utilisant exposer vous informez simplement le démon docker que votre conteneur écoute sur le port 1234 . C'est juste de la documentation. Lorsque vous souhaitez lier ce port à un port hôte, vous le publiez . J'ai écrit une réponse ici < / a> qui a plus de détails.


ajout d'environnement: - HOST = 0.0.0.0 dans docker-compose.yml résout mon problème



0
votes

Exemple de travaux de composition de docker:

version: '3'

services:
  server:
    container_name: docker_api_web_container
    image: docker_api_web
    build: .
    volumes:
      - ./src:/usr/src/node-app/src
      - ./package.json:/usr/src/node-app/package.json
    environment:
     - ENV=DEVELOPMENT
     - PORT=4010
    ports:
      - '9000:4010'
    depends_on:
      - 'mongo'

  mongo:
    container_name: docker_mongo_container
    image: 'mongo'
    ports:
      - '27017:27017'

  adminmongo:
    container_name: docker_adminmongo_container
    image: mrvautin/adminmongo
    links: ['mongo:mongo']
    environment:
      - HOST=0.0.0.0
    ports:
      - '1234:1234'


1 commentaires

Pouvez-vous expliquer en quoi votre solution fonctionne différemment?