diff --git a/.circleci/config.yml b/.circleci/config.yml index d10d636..d3b53d2 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -103,6 +103,26 @@ jobs: name: Deploy app command: yarn netlify deploy --auth $NETLIFY_AUTH_TOKEN --dir /tmp/server-doc --site $NETLIFY_SITE_ID --prod + docker-build-and-push: + working_directory: /dockerapp + docker: + - image: docker:17.05.0-ce-git + steps: + - checkout + - setup_remote_docker + - run: + name: Build application Docker image + command: | + docker build --cache-from=app -t app . + - deploy: + name: Publish application to docker hub + command: | + docker login -e $PROD_EMAIL -u $DOCKERHUB_USERNAME -p $DOCKERHUB_PASSWORD + docker tag app $DOCKERHUB_USERNAME/$DOCKERHUB_APP_NAME:$CIRCLE_BUILD_NUM + docker tag app $DOCKERHUB_USERNAME/$DOCKERHUB_APP_NAME:latest + docker push $DOCKERHUB_USERNAME/$DOCKERHUB_APP_NAME:$CIRCLE_BUILD_NUM + docker push $DOCKERHUB_USERNAME/$DOCKERHUB_APP_NAME:latest + workflows: version: 2 build-test-and-lint: @@ -141,3 +161,12 @@ workflows: filters: branches: only: main + - docker-build-and-push: + requires: + - build + - lint + - back-test-e2e + - back-test-unit + filters: + branches: + only: main \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..2005d11 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,28 @@ +FROM node:lts-fermium as development + +WORKDIR /nest-server + +COPY package*.json + +RUN yarn install --only=development + +COPY . . + +RUN yarn run build + +FROM node:lts-fermium as production + +ARG NODE_ENV=production +ENV NODE_ENV=${NODE_ENV} + +WORKDIR /nest-server + +COPY package*.json ./ + +RUN yarn install --only=production + +COPY . . + +COPY --from=development /nest-server/dist ./dist + +CMD ["node", "dist/main"] \ No newline at end of file