diff --git a/Procfile b/Procfile new file mode 100644 index 00000000..ac3a3657 --- /dev/null +++ b/Procfile @@ -0,0 +1 @@ +web: gunicorn --pythonpath app app.wsgi diff --git a/app.json b/app.json new file mode 100644 index 00000000..7f61deac --- /dev/null +++ b/app.json @@ -0,0 +1,45 @@ +{ + "name": "doccano", + "description": "Open source text annotation tool for machine learning practitioner.", + "keywords": ["Python", "Machine Learning", "Annotation"], + "website": "https://doccano.herokuapp.com/", + "repository": "https://github.com/chakki-works/doccano", + "logo": "https://github.com/chakki-works/doccano/wiki/images/doccano.png", + "success_url": "/", + "env": { + "ADMIN_USER_NAME": { + "description": "The user name for the admin account." + }, + "ADMIN_CONTACT_EMAIL": { + "description": "The contact email address for the admin account." + }, + "ADMIN_PASSWORD": { + "description": "The password for the admin account." + }, + "SECRET_KEY": { + "description": "The value to use as the Django secret key.", + "generator": "secret" + }, + "GOOGLE_TRACKING_ID": { + "description": "Google Analytics tracking id.", + "required": false, + "value": "" + } + }, + "scripts": { + "postdeploy": "sh tools/heroku.sh deploy" + }, + "addons": [ + { + "plan": "heroku-postgresql:hobby-dev" + } + ], + "buildpacks": [ + { + "url": "heroku/nodejs" + }, + { + "url": "heroku/python" + } + ] +} diff --git a/package.json b/package.json new file mode 100644 index 00000000..46116e60 --- /dev/null +++ b/package.json @@ -0,0 +1,8 @@ +{ + "engines": { + "node": "8.x" + }, + "scripts": { + "heroku-postbuild": "sh tools/heroku.sh build" + } +} diff --git a/tools/heroku.sh b/tools/heroku.sh new file mode 100644 index 00000000..8c6535fd --- /dev/null +++ b/tools/heroku.sh @@ -0,0 +1,17 @@ +#!/usr/bin/env bash + +set -o errexit + +if [ "$1" = "build" ]; then + cd app/server + npm install --only=prod + npm install --only=dev + ./node_modules/.bin/webpack --config ./webpack.config.js --mode production + echo "Done webpack build." + ls ./static/bundle +else + python app/manage.py migrate + python app/manage.py collectstatic --noinput + python app/manage.py create_admin --noinput --username="$ADMIN_USER_NAME" --email="$ADMIN_CONTACT_EMAIL" --password="$ADMIN_PASSWORD" + +fi