Когда вы видите следующее, первое, что вам нужно сделать, это проверить журнал контейнера выхода, чтобы выяснить, что произошло.
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
Затем, если вы проверите журнал контейнера выхода, как следующий, вы найдете ошибку:
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
Когда вы видите это, скорее всего, это потому, что формат файла в Windows не совместим с Linux.В вашем сценарии, чтобы все работало, вам нужно сделать следующее:
После того, как git клонирует исходный код, измените envoy-proxy-demos/apps/service.py
, добавьте #!/usr/bin/python3
в начало этого файла.
С помощью git-bash введите envoy-proxy-demos/apps
, измените следующий формат файлов с dos на unix следующим образом:
$ dos2unix start_service.sh service.py
dos2unix: converting file start_service.sh to Unix format...
dos2unix: converting file service.py to Unix format...
Наконец, сборка и запуск:
docker-compose up --build -d
ПРИМЕЧАНИЕ: если вы уже делали вышеупомянутую команду в прошлом, вы все равно можете использовать кеш сборки, поэтому ваши изменения могут не действовать, если этоваше дело, пожалуйста, сделайте следующее вместо этого:
docker-compose build --no-cache
docker-compose up --build -d
Затем вы можете увидеть все контейнеры после выполнения команды, указанной выше:
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