From a1c8cbd99ff72f6822096488850abf515d203df8 Mon Sep 17 00:00:00 2001 From: hallouma875 Date: Fri, 15 Jan 2021 12:28:46 +0100 Subject: [PATCH] dockerfile and circleci --- .circleci/config.yml | 122 +++++++++++++++++++++++++++++++++++++++++++ Dockerfile | 10 ++++ 2 files changed, 132 insertions(+) create mode 100644 .circleci/config.yml create mode 100644 Dockerfile diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 0000000..7e74a8a --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,122 @@ +# Javascript Node CircleCI 2.0 configuration file +# +# Check https://circleci.com/docs/2.0/language-javascript/ for more details +# +version: 2 +jobs: + install: + docker: + # specify the version you desire here + - image: circleci/node:8.12.0 + + # Specify service dependencies here if necessary + # CircleCI maintains a library of pre-built images + # documented at https://circleci.com/docs/2.0/circleci-images/ + # - image: circleci/mongo:3.4.4 + + working_directory: ~/repo + + steps: + - checkout + + # Download and cache dependencies + - restore_cache: + keys: + - v1-dependencies-{{ checksum "package.json" }} + # fallback to using the latest cache if no exact match is found + - v1-dependencies- + + - run: yarn install + + - save_cache: + paths: + - node_modules + key: v1-dependencies-{{ checksum "package.json" }} + build: + docker: + # specify the version you desire here + - image: circleci/node:8.12.0 + + # Specify service dependencies here if necessary + # CircleCI maintains a library of pre-built images + # documented at https://circleci.com/docs/2.0/circleci-images/ + # - image: circleci/mongo:3.4.4 + + working_directory: ~/repo + + steps: + - checkout + + # Download and cache dependencies + - restore_cache: + keys: + - v1-dependencies-{{ checksum "package.json" }} + # fallback to using the latest cache if no exact match is found + - v1-dependencies- + + - run: yarn build + - run: + name: Copy deployment artifacts to workspace + command: | + cp ./dist /tmp/server -r + - store_artifacts: + path: /tmp/server + - persist_to_workspace: + root: /tmp + paths: + - server + + - save_cache: + paths: + - node_modules + key: v1-dependencies-{{ checksum "package.json" }} + + deploy: + docker: + - image: circleci/node:dubnium-browsers + working_directory: ~/repo + steps: + - checkout + - attach_workspace: + at: /tmp + - restore_cache: + keys: + - v1-dependencies-{{ checksum "package.json" }} + # fallback to using the latest cache if no exact match is found + - v1-dependencies- + - run: + name: Deploy app + command: npx netlify-cli deploy --auth $NETLIFY_AUTH_TOKEN --site $NETLIFY_SITE_ID --dir /tmp/server --prod + docker-build-and-push: + working_directory: /dockerapp + docker: + - image: docker:17.05.0-ce-git + steps: + - checkout + - setup_remote_docker + - run: + name: Build & push Docker image + command: | + docker build --cache-from=app -t app . + - deploy: + name: Publish application to docker hub + command: | + docker login -e $DOCKER_HUB_EMAIL -u $DOCKER_HUB_USER_ID -p $DOCKER_HUB_PWD + docker tag app $DOCKER_HUB_USER_ID/backend_final:$CIRCLE_BUILD_NUM + docker tag app $DOCKER_HUB_USER_ID/backend_final:latest + docker push $DOCKER_HUB_USER_ID/backend_final:$CIRCLE_BUILD_NUM + docker push $DOCKER_HUB_USER_ID/backend_final:latest +workflows: + version: 2 + build-test-and-deploy: + jobs: + - install + - build: + requires: + - install + - deploy: + requires: + - build + - docker-build-and-push: + requires: + - build \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..b097491 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,10 @@ +FROM node:dubnium + +WORKDIR /server + +COPY . . + +RUN yarn install + + +CMD ["yarn", "start"] \ No newline at end of file