2

I'm using windows 10, with powershell as a command line. I'm following a simple tutorial but unfortunately, I'm getting service exit with code Exit 127 with The system cannot find the path specified.

After running the command:

docker-compose ps
The system cannot find the path specified.
                 Name                               Command                State                              Ports
--------------------------------------------------------------------------------------------------------------------------------------------
httproute-simple-match_front-envoy_1     /docker-entrypoint.sh /bin ...   Up         10000/tcp, 0.0.0.0:8000->80/tcp, 0.0.0.0:8001->8001/tcp
httproute-simple-match_service_blue_1    /bin/sh -c /usr/local/bin/ ...   Exit 127
httproute-simple-match_service_green_1   /bin/sh -c /usr/local/bin/ ...   Exit 127
httproute-simple-match_service_red_1     /bin/sh -c /usr/local/bin/ ...   Exit 127

While other docker commands like

docker-compose ps --service gives:

front-envoy service_blue service_green service_red`

works.

I'm really confuse as to how to resolve it, I've seen many articles but none of them are related to this.

Alohomora
  • 417
  • 1
  • 5
  • 12

2 Answers2

3

When you see next, the first thing you need to do is to check the log of exit container to find what happened.

docker-compose ps
The system cannot find the path specified.
                 Name                               Command                State                              Ports
--------------------------------------------------------------------------------------------------------------------------------------------
httproute-simple-match_front-envoy_1     /docker-entrypoint.sh /bin ...   Up         10000/tcp, 0.0.0.0:8000->80/tcp, 0.0.0.0:8001->8001/tcp
httproute-simple-match_service_blue_1    /bin/sh -c /usr/local/bin/ ...   Exit 127
httproute-simple-match_service_green_1   /bin/sh -c /usr/local/bin/ ...   Exit 127
httproute-simple-match_service_red_1     /bin/sh -c /usr/local/bin/ ...   Exit 127

Then, if you check the log of the exit container like next, you will find the error:

C:\test\envoy-proxy-demos\httproute-simple-match>docker logs httproute-simple-match_service_red_1
/bin/sh: /usr/local/bin/start_service.sh: not found

When you see this, most probably it's because the file format on windows not compatible with linux. For your scenario, to make all things work, you need do next:

  1. After git clone the source code, modify envoy-proxy-demos/apps/service.py, add #!/usr/bin/python3 to the start of this file.

  2. With git-bash's help, enter into envoy-proxy-demos/apps, change following files format from dos to unix as next:

    $ dos2unix start_service.sh service.py
    dos2unix: converting file start_service.sh to Unix format...
    dos2unix: converting file service.py to Unix format...
    
  3. Finally, build & start:

    docker-compose up --build -d
    

    NOTE: if you have already do above command in the past, you may still use the cache of build, so your changes may not effect, if this is your thing, please do next instead:

    docker-compose build --no-cache
    docker-compose up --build -d
    

Then, you can see containers all up after above command done:

                 Name                               Command               State                            Ports
-----------------------------------------------------------------------------------------------------------------------------------------
httproute-simple-match_front-envoy_1     /docker-entrypoint.sh /bin ...   Up      10000/tcp, 0.0.0.0:8000->80/tcp, 0.0.0.0:8001->8001/tcp
httproute-simple-match_service_blue_1    /bin/sh -c /usr/local/bin/ ...   Up      10000/tcp, 80/tcp
httproute-simple-match_service_green_1   /bin/sh -c /usr/local/bin/ ...   Up      10000/tcp, 80/tcp
httproute-simple-match_service_red_1     /bin/sh -c /usr/local/bin/ ...   Up      10000/tcp, 80/tcp
atline
  • 28,355
  • 16
  • 77
  • 113
  • 1
    God! you are a saver. Thanks a lot. – Alohomora Jun 27 '19 at 07:03
  • I have a small doubt: the above process you told aout adding the `#!/usr/bin/python3` to file service.py in starting, so how to deal with it if we are making service in different language example in Java. Also, does the `dos2unix start_service.sh service.py` command always works with every kind of service or the above process you told is specific to python services? – Alohomora Jun 27 '19 at 11:01
  • java run class bytecode, no need #! dos2unix just change windows \r\n to linux \n , also used for text file, no need for binary like java class file – atline Jun 27 '19 at 11:15
-1

Usually this happens on Docker for Mac or Docker for Windows if you haven't allocated enough RAM for your Docker VM

Check preferences -> advanced and try to add more RAM.

  • I've added more ram, but now when I run `docker-compose ps` I get `The system cannot find the path specified`. – Alohomora Jun 26 '19 at 06:54
  • Yes, it's running, and I might have missed in the first time, but earlier also I was getting the same `The system cannot find the path specified`. – Alohomora Jun 26 '19 at 07:17