From c62925daf7f59fb5db7ca2cb3afe63abb468a273 Mon Sep 17 00:00:00 2001 From: NorbiPeti Date: Mon, 15 Nov 2021 20:34:45 +0100 Subject: [PATCH] Add Heroku deploy and frontend/backend deploy scripts - Added local DB container - Added scripts to deploy frontend/backend by running the deploy command in the containers - Installing Docker and Heroku CLI in the dev backend container to be able to build and push the container without installing the CLI on the host - Building and pushing the production container to the Heroku Container Registry --- backend/Dockerfile | 18 +++++++++++++++++- backend/docker.sh | 14 ++++++++++++-- deploy-backend.sh | 5 +++++ deploy-frontend.sh | 3 +++ docker-compose.yml | 6 ++++++ 5 files changed, 43 insertions(+), 3 deletions(-) create mode 100755 deploy-backend.sh create mode 100755 deploy-frontend.sh diff --git a/backend/Dockerfile b/backend/Dockerfile index 2da1789..146baf5 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -1,5 +1,5 @@ # Check out https://hub.docker.com/_/node to select a new base image -FROM node:16-slim +FROM node:16-slim AS development # Create app directory (with user `node`) RUN mkdir -p /home/node/app @@ -8,6 +8,22 @@ WORKDIR /home/node/app EXPOSE 4200 +# Install Docker +RUN apt-get update +RUN apt-get install -y \ + ca-certificates \ + curl \ + gnupg \ + lsb-release +RUN curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg +RUN echo \ + "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \ + $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null +RUN apt-get update +RUN apt-get install -y docker-ce docker-ce-cli containerd.io +# Install Heroku CLI +RUN curl https://cli-assets.heroku.com/install-ubuntu.sh | sh + ENTRYPOINT [ "/docker.sh" ] CMD [ "run" ] diff --git a/backend/docker.sh b/backend/docker.sh index 825be9e..b78e67d 100644 --- a/backend/docker.sh +++ b/backend/docker.sh @@ -1,8 +1,18 @@ #!/usr/bin/env bash +set -e if [ "$COMMAND" == "deploy" ]; then - echo TODO - exit 0 + echo Building Docker image + docker build -t registry.heroku.com/np-szakdolgozat/web -f Dockerfile-prod . + echo Logging in to Heroku + heroku login + echo Logging in to Container Registry + heroku container:login + echo Pushing image + docker push registry.heroku.com/np-szakdolgozat/web + echo Releasing new version + heroku container:release web -a np-szakdolgozat + exit 0 fi echo "Installing packages" diff --git a/deploy-backend.sh b/deploy-backend.sh new file mode 100755 index 0000000..581c2cf --- /dev/null +++ b/deploy-backend.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +cd backend || exit +docker-compose build backend +docker-compose run -e COMMAND=deploy -v /var/run/docker.sock:/var/run/docker.sock backend diff --git a/deploy-frontend.sh b/deploy-frontend.sh new file mode 100755 index 0000000..f632525 --- /dev/null +++ b/deploy-frontend.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +docker-compose run -e COMMAND=deploy frontend diff --git a/docker-compose.yml b/docker-compose.yml index 2df9786..487b768 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -16,6 +16,12 @@ services: environment: - COMMAND=run - DATABASE_URL=${CLEARDB_DATABASE_URL} + database: + image: mysql:5.6 + ports: + - "3306:3306" + environment: + - MYSQL_ROOT_PASSWORD=DevelopmentPassword networks: default: