From 6295e51d907ba26ebd0398bdd3e68b0c34fba12e Mon Sep 17 00:00:00 2001 From: Radon Rosborough Date: Tue, 9 Jun 2020 15:17:46 -0600 Subject: [PATCH] Getting things ready for deploy to Heroku --- .circleci/config.yml | 21 +++++++++++++++++++++ .dockerignore | 1 + Dockerfile => Dockerfile.dev | 0 Dockerfile.prod | 21 +++++++++++++++++++++ Makefile | 20 +++++++++++++++++--- backend/src/langs.ts | 2 +- frontend/pages/index.ejs | 4 ++-- package.json | 2 +- scripts/pid1.bash | 4 ++-- 9 files changed, 66 insertions(+), 9 deletions(-) create mode 100644 .circleci/config.yml create mode 120000 .dockerignore rename Dockerfile => Dockerfile.dev (100%) create mode 100644 Dockerfile.prod diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 0000000..c06af7e --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,21 @@ +version: 2 +jobs: + build_and_deploy: + docker: + - image: docker:18.09 + steps: + - checkout + - setup_remote_docker + - run: apk add --no-cache --no-progress bash curl make + - run: curl https://cli-assets.heroku.com/install.sh | sh + - run: make deploy +workflows: + version: 2 + ci: + jobs: + - build_and_deploy: + filters: + branches: + only: master + tags: + ignore: /.*/ diff --git a/.dockerignore b/.dockerignore new file mode 120000 index 0000000..3e4e48b --- /dev/null +++ b/.dockerignore @@ -0,0 +1 @@ +.gitignore \ No newline at end of file diff --git a/Dockerfile b/Dockerfile.dev similarity index 100% rename from Dockerfile rename to Dockerfile.dev diff --git a/Dockerfile.prod b/Dockerfile.prod new file mode 100644 index 0000000..f49da8f --- /dev/null +++ b/Dockerfile.prod @@ -0,0 +1,21 @@ +FROM ubuntu:focal + +ARG UID + +COPY scripts/docker-install.bash /tmp/ +RUN /tmp/docker-install.bash "$UID" + +USER $UID +WORKDIR /home/docker +EXPOSE 6119 + +ENTRYPOINT ["/usr/local/bin/pid1.bash"] +COPY scripts/pid1.bash /usr/local/bin/ + +RUN sudo deluser docker sudo +ADD --chown=docker:docker . /home/docker/src +WORKDIR src +RUN yarn install +RUN yarn run backend +RUN yarn run frontend +CMD yarn run server diff --git a/Makefile b/Makefile index ca6c03f..9632810 100644 --- a/Makefile +++ b/Makefile @@ -8,7 +8,21 @@ help: ## Show this message sed 's/:[^#]*[#]# /|/' | \ column -t -s'|' >&2 +.PHONY: image +image-dev: ## Build Docker image for development + scripts/docker.bash build . -f Dockerfile.dev -t riju --build-arg "UID=$(UID)" + +.PHONY: image +image-prod: ## Build Docker image for production + scripts/docker.bash build . -f Dockerfile.prod -t riju:prod --build-arg "UID=$(UID)" + .PHONY: docker -docker: ## Run shell with source code and deps inside Docker - scripts/docker.bash build . -t riju --build-arg "UID=$(UID)" - scripts/docker.bash run -it --rm -v "$(PWD):/home/docker/src" -p 6119:6119 riju +docker: image-dev ## Run shell with source code and deps inside Docker + scripts/docker.bash run -it --rm -v "$(PWD):/home/docker/src" -p 6119:6119 riju bash + +.PHONY: deploy +deploy: image-prod ## Deploy to Heroku + scripts/docker.bash tag riju:prod registry.heroku.com/riju-sandbox/web + heroku auth:token | scripts/docker.bash login --username=_ --password-stdin registry.heroku.com + scripts/docker.bash push registry.heroku.com/riju-sandbox/web + heroku container:release web -a riju-sandbox diff --git a/backend/src/langs.ts b/backend/src/langs.ts index a13e378..a5309af 100644 --- a/backend/src/langs.ts +++ b/backend/src/langs.ts @@ -149,7 +149,7 @@ int main() { monacoLang: "bat", repl: "wine cmd", main: "main.bat", - run: `pkill wineserver64; while pgrep wineserver64 >/dev/null; do sleep 0.05; done; wine cmd /k main.bat`, + run: `wine cmd /k main.bat`, template: `echo "Hello, world!" `, }, diff --git a/frontend/pages/index.ejs b/frontend/pages/index.ejs index fd5ba8e..e5a2544 100644 --- a/frontend/pages/index.ejs +++ b/frontend/pages/index.ejs @@ -6,8 +6,8 @@ -

Riju: online access to any programming language

- Select a language to get started immediately: +

Riju: online playground for every programming language

+ Pick your favorite language to get started:
<% for (const [id, {name}] of Object.entries(langs)) { %> class="language"> diff --git a/package.json b/package.json index ffe5304..d6cf16e 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,7 @@ "backend-dev": "tsc --watch", "frontend": "webpack --production", "frontend-dev": "webpack --development --watch", - "server": "node server.js", + "server": "node backend/out/server.js", "server-dev": "watchexec -w backend/out -r -n node backend/out/server.js" } } diff --git a/scripts/pid1.bash b/scripts/pid1.bash index 1ceaa37..3e88423 100755 --- a/scripts/pid1.bash +++ b/scripts/pid1.bash @@ -9,8 +9,8 @@ export SHELL="$(which bash)" export HOST=0.0.0.0 -if [[ -d src ]]; then - cd src +if [[ -d /home/docker/src ]]; then + cd /home/docker/src fi exec "$@"