2016-04-13 11 views
2

Bağlantılı kapsayıcı bir "park" oluşturmak için docker-compose kullanıyorum. Burada özel bir şey, ben API/Kullanıcı arabirimi/arka uç vb .. Orada benim docker-compose.yml:Docker uzak API'sı ile varolan bir docker ağına nasıl bağlanır (dockerode aracılığıyla)

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 

Ben sadece yeni bir ağda bu bağlantılı konteyner gibi bir "park" oluşturmak öğrenirler. docker network ls sonucu:

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

projenin bir diğer kısmı için sinek kabın üzerine oluşturulur. Ama daha önce docker-compose tarafından oluşturulan deimos_api kapsayıcısına yeni kapsayıcı erişimini istiyorum.

Aşağıdaki kod ile javascript dockerode (Docker Uzaktan API sarmalayıcı) kullanıyorum:

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 
       }); 
      } 
     }); 
    } 
}); 

Ama şu hata var:

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

nasıl belirtmek için herhangi bir fikir belirli bir ağa nasıl bağlanacağınızı (burada deimos_default) dockerode?

Teşekkür ederiz.

DÜZENLEME: Ben liman işçisi 1.10.3, kullanıyorum liman işçisi-oluşturma 1.6.2 ve dockerode 2.2.10

cevap

İlgili konular