diff --git a/.circleci/config.yml b/.circleci/config.yml index dded634..461688f 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -7,6 +7,11 @@ globals: postgres: &postgres circleci/postgres:9.6.5 caches: dependencies: &dependencies dependencies-{{ checksum "package.json" }} + docker_hub: + user-id: &dockerhub-user-id anthonyjhoiro + password: &dockerhub-password $DOCKERHUB_PASSWORD + image: &dockerhub-image devops-tpfinal + # --- Commands --- # @@ -25,6 +30,9 @@ jobs: build: &shared-config docker: - image: *node + auth: + username: *dockerhub-user-id + password: *dockerhub-password working_directory: ~/app steps: - checkout @@ -72,6 +80,28 @@ jobs: name: Lint files command: yarn lint + docker-build: + <<: *shared-config + environment: + DOCKER_HUB_PWD: *dockerhub-password + DOCKER_HUB_USER_ID: *dockerhub-user-id + DOCKER_HUB_IMAGE: *dockerhub-image + steps: + - checkout + - setup_remote_docker: + version: 20.10.7 + - run: + name: Build docker image + command: docker build -t app . + - deploy: + name: Publish image to Docker Hub + command: | + echo $DOCKERHUB_PASSWORD | docker login -u $DOCKER_HUB_USER_ID --password-stdin + docker tag app $DOCKER_HUB_USER_ID/$DOCKER_HUB_IMAGE:$CIRCLE_BUILD_NUM + docker tag app $DOCKER_HUB_USER_ID/$DOCKER_HUB_IMAGE:latest + docker push $DOCKER_HUB_USER_ID/$DOCKER_HUB_IMAGE:$CIRCLE_BUILD_NUM + docker push $DOCKER_HUB_USER_ID/$DOCKER_HUB_IMAGE:latest + # --- Workflow definition --- # workflows: @@ -88,3 +118,12 @@ workflows: - lint: requires: - build + - docker-build: + requires: + - test + - test-e2e + - lint + filters: + branches: + only: + - main diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..af00f65 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,18 @@ +FROM node:lts as builder +WORKDIR /build + +COPY . . +RUN yarn install +RUN yarn build + +FROM node:lts + +WORKDIR /app + +COPY --from=builder /build/dist /app/dist +COPY --from=builder /build/package.json /app/package.json + +RUN yarn install --prod + +CMD ["yarn", "start:prod"] +