Create
cancel
Showing results for 
Search instead for 
Did you mean: 
Sign up Log in

why docker inside the bitbucket docker pipeline?

Jens Bengtsson October 12, 2018

 

I am trying to build a nodejs angular docker image and run a container of it in AWS ECS. I think this way of doing it is very ineffecient and illogical. But I don´t know how to it in another way.

 

Here I use a node image with aws cli to easily push the and deploy the docker image to a aws ecs container

bitbucket-pipelines.yml

image: rhinogram/node-awscli
#image: node:9.7.1

options:
docker: true

pipelines:
default:
- step:
script:
- echo "This script runs on all branches that don't have any specific pipeline assigned in 'branches'."
branches:
branch*:
- step:
caches:
- docker
script:

- eval $(aws ecr get-login --no-include-email | sed 's|https://||')

- cd ./ClientApp/
- docker build -t xxx .

# Tag and push my docker image to ECR
- docker tag xxx
- docker push xxx

# Register the ECS task definition and capture the version
- export IMAGE_NAME=xxx

- export TASK_VERSION=$(xxx

# Set ECS service to desired count 0
- aws ecs update-service --cluster xxx --service xxx --desired-count 0

# Set ECS service to desired count 1 and assign the new task-definition ## testing
- aws ecs update-service --cluster xxx --service wxxx --task-definition xxx:$TASK_VERSION --desired-count 1

 

The Dockerfile ia almost a default nodejs Dockerfile

Dockerfile

# base image
FROM node:9.7.1

# install chrome for protractor tests
RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -
RUN sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list'
RUN apt-get update && apt-get install -yq google-chrome-stable


# set working directory
RUN mkdir /usr/src/app
WORKDIR /usr/src/app

# add `/usr/src/app/node_modules/.bin` to $PATH
ENV PATH /usr/src/app/node_modules/.bin:$PATH

# install and cache app dependencies
COPY package.json /usr/src/app/package.json

RUN npm install
RUN npm install -g @angular/cli@6.2.2

# add app
COPY . /usr/src/app

# start app
CMD ng serve --port xxx --host xxx

 It takes around 9min for the pipelines start to finish. This way of doing it seems wrong?

and the docker cache seems to not work as well. 

Can´t I do it another way? I have the "same" (very similar) setup for .net core app as well

2 answers

0 votes
Jens Bengtsson October 17, 2018

Or let´s say I use microsoft/dotnet:2.1-sdk in the pipeline and then the same image in the Dockerfile. It pulls the image again. Which doesn´t make sense to me

0 votes
Jens Bengtsson October 15, 2018

Is there someway to run all Dockerfile steps directly in the pipeline and still push the Dockerfile the AWS microservice cluster? I feel the pipeline could complete in 1min instead of 9min

Suggest an answer

Log in or Sign up to answer
TAGS
AUG Leaders

Atlassian Community Events