简体   繁体   中英

docker command not found when executed over bitbucket ssh pipeline

I'm using bitbucket pipeline to deploy my laravel application, when I push to my repo it start to build and it works perfectly until the docker exec command which will send inline command to execute inside the php container, I get the error

bash: line 3: docker: command not found

which is very wired because when I run the command directly on the same server at the same directory it works perfectly, docker is installed on the server and as you can see inside execute.sh docker-compose works with no issues however when running over the pipeline I get the error, notice the pwd to make sure the command executed in the right directory.

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 

Inside execute.sh it looks like this:

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

And the output from bitbucket pipeline build result looks like this:

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

I think that part of the reason this is happening is because docker-compose and docker are two separate commands. Just because one works does not mean they both work. Also you might want to check the indentation of your bitbucket-pipelines.yaml file because yaml can be pretty finicky.

See here for sample structure: https://confluence.atlassian.com/bitbucket/configure-bitbucket-pipelines-yml-792298910.html

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM