2017-01-05 2 views
0

J'essaie d'exécuter une deuxième application Meteor dans un conteneur Docker. Le premier (qui fonctionne comme je veux) est accessible avec localhost:3000 et je veux en lancer un second dans un autre port comme localhost:3003. Lorsque je tente d'accéder à la seconde où je suis arrivé ceComment démarrer plusieurs conteneurs qui utilisent tcp avec Docker

This website is not accessible. Localhost don't allow the connexion. Do a research about localhost 3003 on Google.

Et si je regarde dans Docker je peux voir que mes conteneurs sont en cours d'exécution: enter image description here mais j'ai remarqué une différence entre le port, celui qui est accessible est 0.0.0.0:3000->3000/tcp et celui qui n'est pas accessible est 3000/tcp, 0.0.0.0:3003->3003/tcp donc je pense qu'il y a quelque chose qui ne va pas ici.

Et dans mon docker-compose.yml je l'ai fait:

app: 
    image: jeromevi/controlcontainersapp 
    ports: 
    - "3003:3003" 
    environment: 
    - ROOT_URL=http://localhost:3003 
    - MONGO_URL=mongodb://mongo:27017/meteor 
mongo: 
    image: mongo:latest 

Nous vous remercions de l'aide

[EDIT] il y a les journaux:

=> Starting app on port 3000... 

/opt/meteor/dist/bundle/programs/server/node_modules/fibers/future.js:313 
         throw(ex); 
         ^
MongoError: failed to connect to server [mongo:27017] on first connect 
    at Object.Future.wait (/opt/meteor/dist/bundle/programs/server/node_modules/fibers/future.js:449:15) 
    at new MongoConnection (packages/mongo/mongo_driver.js:219:27) 
    at new MongoInternals.RemoteCollectionDriver (packages/mongo/remote_collection_driver.js:4:16) 
    at Object.<anonymous> (packages/mongo/remote_collection_driver.js:38:10) 
    at Object.defaultRemoteCollectionDriver (packages/underscore.js:784:19) 
    at new Mongo.Collection (packages/mongo/collection.js:103:40) 
    at meteorInstall.both.collections.infosContainers.js (both/collections/infosContainers.js:2:14) 
    at fileEvaluate (packages/modules-runtime.js:181:9) 
    at require (packages/modules-runtime.js:106:16) 
    at /opt/meteor/dist/bundle/programs/server/app/app.js:217:1 
    - - - - - 
    at [object Object].<anonymous> (/opt/meteor/dist/bundle/programs/server/npm/node_modules/meteor/npm-mongo/node_modules/mongodb-core/lib/topologies/server.js:313:35) 
    at emitOne (events.js:77:13) 
    at [object Object].emit (events.js:169:7) 
    at [object Object].<anonymous> (/opt/meteor/dist/bundle/programs/server/npm/node_modules/meteor/npm-mongo/node_modules/mongodb-core/lib/connection/pool.js:271:12) 
    at [object Object].g (events.js:260:16) 
    at emitTwo (events.js:87:13) 
    at [object Object].emit (events.js:172:7) 
    at Socket.<anonymous> (/opt/meteor/dist/bundle/programs/server/npm/node_modules/meteor/npm-mongo/node_modules/mongodb-core/lib/connection/connection.js:165:49) 
    at Socket.g (events.js:260:16) 
    at emitOne (events.js:77:13) 

[EDIT2] Avec la nouvelle configuration les erreurs sont: enter image description here

Mais je que le réseau testNtw:

NETWORK ID   NAME    DRIVER    SCOPE 
6767c4bf208f  bridge    bridge    local 
c69fbc3a59cf  host    host    local 
f6f5083df32e  none    null    local 
3d0aacdbb757  testNtw    bridge    local 

Et je l'ai fait la même docker-compose.yml comme dans la réponse

Répondre

0

Effectuez les opérations suivantes:

sudo docker network create <your network name> 

Docker Compose fichier:

version: '2' 
services: 
    app: 
    image: jeromevi/controlcontainersapp 
    ports: 
     - "3003:3000" 
    environment: 
     - ROOT_URL=http://localhost:3000 
     - MONGO_URL=mongodb://mongo:27017/meteor 
    networks: 
     - <your network name> 
    mongo: 
    image: mongo:latest 
    networks: 
     - <your network name> 
networks: 
    <your network name>: 
    external: true 

Ensuite, vérifiez cette URL dans votre navigateur:

http://localhost:3003 

Précision:

Avec la mise en réseau par défaut, vous devez utiliser links qui est une caractéristique de l'héritage. Je recommande d'utiliser User-Defined réseaux. User-Defined réseaux fournissent DNS intégré de sorte que vous pouvez vous connecter à vos conteneurs à partir d'autres conteneurs sur le même réseau User-Defined par name. Dans votre cas, un conteneur nommé mongo doit être accessible à partir d'un conteneur nommé app.

+0

Après que 3 secondes les ports ont disparu et je ne peux pas accéder évidemment – Jerome

+0

'docker logs ' et afficher la sortie, pour le conteneur app évidemment –

+0

(Désolé je ne savais pas que le mot "évidemment" avait une mauvaise signification en anglais ...) J'ai posté les logs et je vous remercie pour l'aide – Jerome