2016-04-13 15 views
2

Ich verwende docker-compose, um einen "Park" von Container miteinander verbunden zu erstellen. Nichts Besonderes hier, ich habe API/Frontend/Backend etc .. Es ist mein docker-compose.yml:So stellen Sie eine Verbindung zu einem vorhandenen Docker-Netzwerk mit Docker Remote-API her (über Dockerode)

version: "2" 

services: 
    api: 
     build: ./deimos_api/docker 
     ports: 
      - "39999:80" 
     volumes: 
      - ./deimos_api:/root/deimos_api 
    asset: 
     build: ./deimos_asset/docker 
     ports: 
      - "8000:80" 
     volumes: 
      - ./deimos_asset:/root/deimos_asset 
     depends_on: 
      - api 
     links: 
      - api 
    data-manager: 
     build: ./deimos_data_manager/docker 
     ports: 
      - "3333:3333" 
     volumes: 
      - ./deimos_data_manager:/root/deimos_data_manager 
     depends_on: 
      - api 
     links: 
      - api 
    backend: 
     build: ./deimos_backend/docker 
     ports: 
      - "1080:80" 
     volumes: 
      - ./deimos_backend:/root/deimos_backend 
      - /var/run/docker.sock:/var/run/docker.sock 
     depends_on: 
      - api 
      - asset 
     links: 
      - api 

Ich lerne nur, dass ein „Park“ schaffen, wie diese verknüpften Container auf ein neues Netzwerk. docker network ls Ergebnis:

NETWORK ID   NAME    DRIVER 
448daa341d56  bridge    bridge    
c7feeeb44cd0  deimos_default  bridge    
1fc2d6132b86  none    null     
a80e41eab3cc  host    host 

Ein anderer Teil des Projektes wird im laufenden Behälter erzeugt. Aber ich möchte, dass der neue Container auf den deimos_api Container zugreifen kann, der zuvor von docker-compose erstellt wurde.

Ich verwende dockerode (Wrapper von Docker Remote API) in Javascript mit dem folgenden Code:

docker.createContainer({ 
    "Image": config.dockerGameServerImageName, 
    "name": config.gameServerPrefix + serverName, 
    "Volumes": {"/root/deimos_server":{}} 
}, function (err, container) { 
    if(err){ 
     console.log(err); 
     reject(err); 
    } else { 
     container.start({ 
      "PortBindings": { "80/tcp": [{"HostPort": lastPortUsed+""}]}, 
      "Binds":[config.deimosServerVolumePath+":/root/deimos_server"], 
      "Links":[config.dockerApiContainerName+":api"] 
     }, function (err, data) {if(err) { 
       console.log(err); 
       reject(err); 
      } else { 
       console.log("Create container " + serverName); 
       gameContainer[config.gameServerPrefix + serverName] = lastPortUsed+""; 
       resolv({ 
        'serverPort':lastPortUsed, 
        'serverName':serverName 
       }); 
      } 
     }); 
    } 
}); 

Aber ich habe folgende Fehlermeldung:

Error: HTTP code is 500 which indicates error: server error - Could not get container for deimos_api_1 

Jede Idee, wie Sie angeben in dockerode wie man einem bestimmten Netzwerk beitritt (hier deimos_default)?

Vielen Dank.

EDIT: Ich bin mit Docker 1.10.3, Docker-compose 1.6.2 und 2.2.10 dockerode

Antwort