PDMLab / docker-compose

Manage Docker-Compose via Node.js
https://pdmlab.github.io/docker-compose/
MIT License
198 stars 78 forks source link

spawn docker-compose ENOENT on Gitlab CI #213

Open axeh opened 2 years ago

axeh commented 2 years ago

When I run tests(jest) for the application inside Gitlab CI this error is manifested:

spawn docker-compose ENOENT at node_modules/testcontainers/dist/docker-compose/functions/docker-compose-up.js:37:15 at Generator.throw () at rejected (node_modules/testcontainers/dist/docker-compose/functions/docker-compose-up.js:6:65)

I have some docker-compose file and running it locally everything works OK. Gitlab runner is configured like docker runner and can use docker-in-docker. This is the setup of docker runner (https://docs.gitlab.com/ee/ci/docker/using_docker_build.html#use-docker-in-docker)

On Docker runner, we installed docker-compose so everything is working correctly. If I run "docker-compose" command from GitLab CI everything works. But using the inside node app crashes the test execution.

GitLab CI looks something like

  image: docker:22.06-rc
  variables:
    DOCKER_DRIVER: overlay2
    DOCKER_TLS_CERTDIR: "/certs"
  services:
     - name: docker:22.06-rc-dind
  before_script:  
    - docker info
    - docker-compose --version
    - apk add --update npm
  script:
    - npm install
    - npm test

inside npm test it looks like

 const composeFilePath = path.resolve(__dirname, "../../somedirectory");
 const result = await upAll({ cwd: composeFilePath, log: true });
sgavila commented 1 year ago

I think that you are passing to cwd an invalid path and docker-compose can´t found the docker-compose.yaml file. Irecommend you try with absolute path in string.