Команда docker не найдена при выполнении через ssh-конвейер bitbucket - PullRequest
0 голосов
/ 21 октября 2019

Я использую конвейер bitbucket для развертывания моего приложения laravel, когда я нажимаю на репо, оно начинает собираться и работает отлично, пока команда docker exec, которая отправит встроенную команду для выполнения внутри контейнера php, не получит ошибку

bash: line 3: docker: command not found

, который очень проводной, потому что когда я запускаю команду непосредственно на том же сервере в том же каталоге, она работает отлично, на сервере устанавливается docker и, как вы можете видеть внутри execute.sh docker-composeработает без проблем, однако при работе через конвейер я получаю сообщение об ошибке, обратите внимание на pwd, чтобы убедиться, что команда выполняется в правильном каталоге.

bitbucket-pipelines.yml

image: php:7.3

pipelines:
  branches:
    testing:
      - step:
          name: Deploy to Testing
          deployment: Testing
          services:
            - docker
          caches:
            - composer
          script:
            - apt-get update && apt-get install -y unzip openssh-client
            - curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
            - composer require phpunit/phpunit
            - vendor/bin/phpunit laravel/tests/Unit
            - ssh do.server.net 'bash -s' < execute.sh 

Внутриexecute.sh выглядит следующим образом:

cd /home/docker/docker-laravel
docker-compose build && docker-compose up -d
pwd
docker exec -ti php sh -c "php helpershell.php"
exit

А вывод результата сборки конвейера bitbucket выглядит следующим образом:

Successfully built 1218483bd067
Successfully tagged docker-laravel_php:latest
Building nginx
Step 1/1 : FROM nginx:latest
 ---> 4733136e5c3c
Successfully built 4733136e5c3c
Successfully tagged docker-laravel_nginx:latest
Creating php ... 
Creating mysql ... 
Creating mysql ... done
Creating php   ... done
Creating nginx ... 
Creating nginx ... done
/home/docker/docker-laravel
bash: line 3: docker: command not found

1 Ответ

0 голосов
/ 23 октября 2019

Я думаю, что отчасти это происходит потому, что docker-compose и docker - две отдельные команды. То, что кто-то работает, не означает, что они оба работают. Также вы можете проверить отступ в вашем файле bitbucket-pipelines.yaml, потому что yaml может быть довольно привередливым.

См. Пример структуры: https://confluence.atlassian.com/bitbucket/configure-bitbucket-pipelines-yml-792298910.html

...