From 8889ab2bb68c4320e09dc1fda7935ad625989eb3 Mon Sep 17 00:00:00 2001 From: corpulent Date: Fri, 5 Aug 2022 14:34:07 +0300 Subject: [PATCH] build: server --- .gitignore | 1 + README.md | 14 +++++--------- deploy/Dockerfile | 23 +++++++++++++++++++++++ deploy/Makefile | 36 ++++++++++++++++++++++++++++++++++++ deploy/run.sh | 20 ++++++++++++++++++++ 5 files changed, 85 insertions(+), 9 deletions(-) create mode 100644 deploy/Dockerfile create mode 100644 deploy/Makefile create mode 100644 deploy/run.sh diff --git a/.gitignore b/.gitignore index 1205681..0c4f27c 100644 --- a/.gitignore +++ b/.gitignore @@ -317,3 +317,4 @@ Temporary Items # Django static +zappa_settings.json diff --git a/README.md b/README.md index 1bd9fd9..05147bd 100644 --- a/README.md +++ b/README.md @@ -18,11 +18,8 @@ cd services/frontend && npm i && npm run start ### Server ```bash -python -m venv .env -source .env/bin/activate -python -m pip install -r services/backend/requirements.txt -python -m pip install black - +make up +make local_server_init make dev_server ``` @@ -30,13 +27,12 @@ make dev_server ## Project roadmap -- Complete react rewrite. -- Ongoing improvements and features for docker compose yaml generation. - Kubernetes manifest generation. -- Deployment to user's ECS, K8S, GS accounts. +- ECS deployment. +- K8S deployment. ## Docs - https://docs.jsplumbtoolkit.com/community/ - https://github.com/compose-spec/compose-spec/blob/master/spec.md -- https://docs.docker.com/compose/compose-file/ \ No newline at end of file +- https://docs.docker.com/compose/compose-file/ diff --git a/deploy/Dockerfile b/deploy/Dockerfile new file mode 100644 index 0000000..300e9a7 --- /dev/null +++ b/deploy/Dockerfile @@ -0,0 +1,23 @@ +FROM python:3.9 + +WORKDIR /usr/src + +RUN apt-get update \ + && apt-get install -y \ + software-properties-common \ + build-essential + +RUN apt-get -y update \ + && apt-get -y install \ + zip \ + git \ + wget \ + curl \ + dos2unix \ + awscli \ + && apt-get clean + +COPY ./run.sh run.sh +RUN chmod +x run.sh + +ENTRYPOINT ["/bin/bash", "run.sh"] diff --git a/deploy/Makefile b/deploy/Makefile new file mode 100644 index 0000000..a70c33a --- /dev/null +++ b/deploy/Makefile @@ -0,0 +1,36 @@ +ORGANIZATION = corpulent +CONTAINER = ctk-backend-build +VERSION = 0.1.0 + +ifneq (,$(wildcard ./.env)) + include .env + export +endif + +.PHONY : build-image + +build-image : + docker build -t $(ORGANIZATION)/$(CONTAINER):$(VERSION) . + +deploy : + docker run --rm --name $(CONTAINER) \ + --env AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID} \ + --env AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY} \ + --env ACTION=${ACTION} \ + --env STAGE=${STAGE} \ + -v ${PWD}/../services/backend/src:/usr/src/src \ + -v ${PWD}/../services/backend/requirements.txt:/usr/src/requirements.txt \ + -v ${PWD}/run.sh:/usr/src/run.sh \ + $(ORGANIZATION)/$(CONTAINER):$(VERSION) + +shell : + docker run -it --rm --name $(CONTAINER) \ + --entrypoint /bin/bash \ + --env AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID} \ + --env AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY} \ + --env ACTION=${ACTION} \ + --env STAGE=${STAGE} \ + -v ${PWD}/../services/backend/src:/usr/src/src \ + -v ${PWD}/../services/backend/requirements.txt:/usr/src/requirements.txt \ + -v ${PWD}/run.sh:/usr/src/run.sh \ + $(ORGANIZATION)/$(CONTAINER):$(VERSION) diff --git a/deploy/run.sh b/deploy/run.sh new file mode 100644 index 0000000..ad2a4f1 --- /dev/null +++ b/deploy/run.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +set -e + +_ACTION=${ACTION:-} +_STAGE=${STAGE:-} + +if [[ -z $_ACTION || -z $_STAGE ]]; then + echo 'make sure action and stage are specified' + exit 1 +fi + +python -m venv .env +source .env/bin/activate +pip install -r requirements.txt +pip install zappa==0.54.2 + +cd src + +zappa ${_ACTION} ${_STAGE}