dockerode-compose icon indicating copy to clipboard operation
dockerode-compose copied to clipboard

Can't run compose.up() when using a external network

Open cz-lucas opened this issue 10 months ago • 0 comments

Hi,

I can't start my stack when using an external network.

NodeJS Version: v23.10.0 Docker Version: Docker version 28.0.1, build 068a01e I am using the lastet versions of dockerode and dockerode-compose.

Docker compose

services:
  nginx:
    image: nginx
    networks:
      - reverse-proxy

networks:
  reverse-proxy:
    external: true
$ node
Welcome to Node.js v23.10.0.
Type ".help" for more information.
> var Dockerode = require('dockerode');
undefined
> var DockerodeCompose = require('dockerode-compose');
undefined
> var docker = new Dockerode();
undefined
> var compose = new DockerodeCompose(docker, '/tmp/docker-compose.yaml', 'nginx');
undefined
> (async () => {
...   await compose.pull();
...   var state = await compose.up();
...   console.log(state);
... })();
Promise {
  <pending>,
  [Symbol(async_id_symbol)]: 70,
  [Symbol(trigger_async_id_symbol)]: 6
}
> Uncaught:
Error: (HTTP code 500) server error - failed to set up container networking: Could not attach to network undefined: rpc error: code = NotFound desc = network undefined not found 
    at /workspaces/onboarding/node_modules/docker-modem/lib/modem.js:383:17
    at getCause (/workspaces/onboarding/node_modules/docker-modem/lib/modem.js:418:7)
    at Modem.buildPayload (/workspaces/onboarding/node_modules/docker-modem/lib/modem.js:379:5) {
  reason: 'server error',
  statusCode: 500,
  json: {
    message: 'failed to set up container networking: Could not attach to network undefined: rpc error: code = NotFound desc = network undefined not found'
  }
}
$ docker network ls
NETWORK ID     NAME                    DRIVER    SCOPE
x1go9sb9riuo   reverse-proxy           overlay   swarm

In another project with nuxt3 I am getting the following error (I am not allowed to share more of the code):

const startContainers= () => {
  const docker = new Docker({ socketPath: '/var/run/docker.sock' });
  var compose = new DockerodeCompose(docker, composeFilePath, "myApp");

  return compose.pull()
    .then((data) => {
      return compose.up();
    })
    .then(() => {
      return { success: true, message: 'Started' };
    })
    .catch((err) => {
      console.error('Error while starting: ', err);
      throw err;
    });
};
 ERROR  Error in process: Cannot read properties of null (reading 'external')

    at Object.buildNetworks (node_modules/dockerode-compose/lib/servicesTools.js:502:58)
    at Object.up (node_modules/dockerode-compose/lib/services.js:174:21)
    at Compose.up (node_modules/dockerode-compose/compose.js:55:40)
    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
    at async node_modules/h3/dist/index.mjs:2009:19
    at async Object.callAsync (node_modules/unctx/dist/index.mjs:72:16)
    at async Server.toNodeHandle (node_modules/h3/dist/index.mjs:2301:7)

How can this be fixed?

Thanks

cz-lucas avatar Mar 19 '25 13:03 cz-lucas