[PYTHON] Publiez une application Web en 4 minutes 33 secondes avec Heroku x Bottle

À propos de cet article

Nous allons vous présenter comment vous pouvez démarrer le développement d'applications Web facilement et rapidement en utilisant les deux éléments suivants. L'objectif est de 4 minutes et 33 secondes entre le début du développement et la sortie.

En fait, je ne pense pas qu'il soit nécessaire qu'une demande * soit publiée immédiatement * dans les 4 minutes et 33 secondes après la réunion. Cependant, pouvoir déployer en 4 minutes et 33 secondes est la preuve que les obstacles au développement Web diminuent régulièrement, et je pense qu'il est important d'avoir ce sentiment avec le code.

Ce que vous pouvez comprendre en lisant cet article

De la construction de l'environnement à la publication

0. Préparation

Les éléments suivants doivent être installés.

1. Construction de l'environnement (initialisation du référentiel Git / création de l'environnement virtuel Python)

$ mkdir agile-dev
$ cd agile-dev
$ git init
$ pyenv virtualenv 2.7.9 agile-dev	#Tout
$ pyenv local agile-dev				#Tout

2. Développement d'applications Hello world

Installation de bibliothèques et implémentation d'applications nécessaires au développement. Au fait, le contenu de ʻapp.py` est Recipes - Bottle 0.13-dev documentation-, Donc je ne fais que copier ici.

$ pip install bottle

app.py


import os
from bottle import route, run

@route("/")
def hello_world():
        return "Hello World!"

run(host="0.0.0.0", port=int(os.environ.get("PORT", 5000)))

3. Créez les fichiers nécessaires au déploiement Heroku

$ pip freeze > requirements.txt			#Liste des bibliothèques dépendantes
$ echo web: python app.py > Procfile	#Type d'application et spécification du point d'entrée

C'est la fin du développement, donc je vais l'engager.

$ git add .
$ git commit -m "initial commit"

4. Créez et publiez l'application Heroku

Je le publierai immédiatement.

$ heroku apps:create agile-dev
$ git push heroku master

Lorsque remote: Verifying deploy ... done. est renvoyé comme résultat de l'exécution de la commande, le déploiement est terminé, alors vérifions-le avec un navigateur. L'URL de publication doit être affichée dans le terminal. remote: https://agile-dev.herokuapp.com/ deployed to Heroku

$ open https://agile-dev.herokuapp.com/

スクリーンショット 2015-04-29 16.14.22.png

Il a été publié en toute sécurité!

délai de mise en œuvre

Comparaison des résultats de l'exécution de la commande date avant et après le début du travail ... ** 3 minutes 54 secondes **. Il s'est terminé en moins de 4 minutes et 33 secondes.

macbook-pro:~ ohbarye$ date
Mercredi 29 avril 2015 15:40:49 JST
~~ (abrégé) ~~
macbook-pro:agile-dev ohbarye$ date
Mercredi 29 avril 2015 15:44:43 JST

Nettoyer

Nettoyez-le et remettez-le en place.

$ heroku apps:destroy --app agile-dev --confirm agile-dev
$ pyenv uninstall agile-dev
$ cd ../
$ rm -rf agile-dev

Au fait, c'était ** 1 minute 8 secondes **, donc un peu plus de 5 minutes au total.

Journal des résultats d'exécution

Je vais le coller pour référence.

Développement-déployer


macbook-pro:~ ohbarye$ date
Mercredi 29 avril 2015 15:40:49 JST
macbook-pro:~ ohbarye$ mkdir agile-dev
macbook-pro:~ ohbarye$ cd agile-dev
macbook-pro:agile-dev ohbarye$ git init
Initialized empty Git repository in /Users/ohbarye/dev/~/agile-dev/.git/
macbook-pro:agile-dev ohbarye$ pyenv virtualenv 2.7.9 agile-dev
New python executable in /Users/ohbarye/.pyenv/versions/agile-dev/bin/python2.7
Also creating executable in /Users/ohbarye/.pyenv/versions/agile-dev/bin/python
Installing setuptools, pip...done.
Ignoring indexes: https://pypi.python.org/simple/
Requirement already satisfied (use --upgrade to upgrade): setuptools in /Users/ohbarye/.pyenv/versions/agile-dev/lib/python2.7/site-packages
Requirement already satisfied (use --upgrade to upgrade): pip in /Users/ohbarye/.pyenv/versions/agile-dev/lib/python2.7/site-packages
Cleaning up...
macbook-pro:agile-dev ohbarye$ pyenv local agile-dev
macbook-pro:agile-dev ohbarye$ pip install bottle
Collecting bottle
  Using cached bottle-0.12.8.tar.gz
Installing collected packages: bottle
  Running setup.py install for bottle
Successfully installed bottle-0.12.8
macbook-pro:agile-dev ohbarye$ vim app.py
macbook-pro:agile-dev ohbarye$ pip freeze > requirements.txt
macbook-pro:agile-dev ohbarye$ echo web: python app.py > Procfile
macbook-pro:agile-dev ohbarye$ git add .
macbook-pro:agile-dev ohbarye$ git commit -m "initial commit"
[master (root-commit) f213a06] initial commit
 4 files changed, 11 insertions(+)
 create mode 100644 .python-version
 create mode 100644 Procfile
 create mode 100644 app.py
 create mode 100644 requirements.txt
macbook-pro:agile-dev ohbarye$ heroku apps:create agile-dev
Creating agile-dev... done, stack is cedar-14
https://agile-dev.herokuapp.com/ | https://git.heroku.com/agile-dev.git
Git remote heroku added
macbook-pro:agile-dev ohbarye$ git push heroku master
Counting objects: 6, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (6/6), 518 bytes | 0 bytes/s, done.
Total 6 (delta 0), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote: 
remote: -----> Python app detected
remote: -----> Installing runtime (python-2.7.9)
remote: -----> Installing dependencies with pip
remote:        Collecting bottle==0.12.8 (from -r requirements.txt (line 1))
remote:          Downloading bottle-0.12.8.tar.gz (69kB)
remote:        Installing collected packages: bottle
remote:          Running setup.py install for bottle
remote:            changing mode of build/scripts-2.7/bottle.py from 600 to 755
remote:            changing mode of /app/.heroku/python/bin/bottle.py to 755
remote:        Successfully installed bottle-0.12.8
remote: 
remote: -----> Discovering process types
remote:        Procfile declares types -> web
remote: 
remote: -----> Compressing... done, 35.1MB
remote: -----> Launching... done, v3
remote:        https://agile-dev.herokuapp.com/ deployed to Heroku
remote: 
remote: Verifying deploy... done.
To https://git.heroku.com/agile-dev.git
 * [new branch]      master -> master
macbook-pro:agile-dev ohbarye$ open https://agile-dev.herokuapp.com/
macbook-pro:agile-dev ohbarye$ date
Mercredi 29 avril 2015 15:44:43 JST
macbook-pro:agile-dev ohbarye$ 

Nettoyer


macbook-pro:agile-dev ohbarye$ date
Mercredi 29 avril 2015 15:49:11 JST
macbook-pro:agile-dev ohbarye$ heroku apps:destroy --app agile-dev --confirm agile-dev
Destroying agile-dev (including all add-ons)... done
macbook-pro:agile-dev ohbarye$ pyenv uninstall agile-dev
pyenv: remove /Users/ohbarye/.pyenv/versions/agile-dev? y
macbook-pro:agile-dev ohbarye$ cd ../
macbook-pro:~ ohbarye$ rm -rf agile-dev/
macbook-pro:~ ohbarye$ date
Mercredi 29 avril 2015 15:50:19 JST
macbook-pro:~ ohbarye$ 

Recommended Posts

Publiez une application Web en 4 minutes 33 secondes avec Heroku x Bottle
TensorBoard facile de 3 minutes dans Google Colab (en utilisant TensorFlow 2.x)
Application Web utilisant Bottle (1)
Comment déployer une application Django sur heroku en seulement 5 minutes
Déployez Django en 3 minutes à l'aide de docker-compose
Configurez un serveur Web local en 30 secondes en utilisant http.server en python 3
Jusqu'à ce que l'application Web créée avec Bottle soit publiée (déployée) sur Heroku