Hi!
I don't know how to stop the container that is already running through the pipe.
I try it this way:
docker stop $(docker ps -a -q --filter name=front* --format="{{.ID}}") ;
docker rm$(docker ps -a -q --filter name=front* --format="{{.ID}}") ;
The pipeline error:
docker: Error response from daemon: driver failed programming external connectivity on endpoint thirsty_feynman (3e184c5114a8476b9abbf08ccf79153b350e3b7c424305acecb169): Bind for 0.0.0.0:8082 failed: port is already allocated.
It works if I try manually inside my docker machine (Stop correctly and then delete the container ).
It doesn't work if I try it from the pipe.
My Pipe:
branches:
master:
- step:
name: Deploy to Registry
script:
- export IMAGE_NAME=angular-image:$BITBUCKET_COMMIT
- docker build -t $IMAGE_NAME .
- docker login -u $registrytoken -p $registrytoken registry.digitalocean.com
- docker tag $IMAGE_NAME registry.digitalocean.com/myregistry/$IMAGE_NAME
- docker push registry.digitalocean.com/myregistry/$IMAGE_NAME
- docker image ls
- echo "$IMAGE_NAME"
services:
- docker
- step:
name: Deploy to droplet
script:
- export IMAGE_NAME=angular-image:$BITBUCKET_COMMIT
- export IMAGE_NAME_myregistry=registry.digitalocean.com/myregistry/angular-image:$BITBUCKET_COMMIT
- export registrytoken=$registrytoken
- echo "$registrytoken"
- echo "$IMAGE_NAME"
- echo "$IMAGE_NAME_myregistry"
- pipe: atlassian/ssh-run:0.3.0
variables:
SERVER: '$SSH_SERVER'
SSH_USER: '$SSH_USER'
SSH_key: '$registrytoken'
COMMAND: >
docker stop $(docker ps -a -q --filter name=front* --format="{{.ID}}") ;
docker rm $(docker ps -a -q --filter name=front* --format="{{.ID}}") ;
docker rmi -f $(docker images "angular-image") ;
docker rmi -f $(docker images "registry.digitalocean.com/myregistry/angular-image") ;
docker login -u $registrytoken -p $registrytoken registry.digitalocean.com ;
docker pull $IMAGE_NAME_myregistry ;
docker tag $IMAGE_NAME_myregistry angular-image ;
docker run -p $SERVER_PORT:80 -d angular-image ;
services:
- docker
definitions:
services:
docker:
memory: 3072