Rozwiązania chmurowe stoją się coraz popularniejsze wśród deweloperów aplikacji webowych. Jednym z powodów wyboru takich platform jest np. uproszczenie procesu wdrażania nowych wersji aplikacji na produkcję. W przypadku platformy Heroku w skonfigurowanym środowisku po wykonaniu commit’a dla zmian w kodzie źródłowym i wysłaniu go na serwer, platforma automatycznie przebuduje aplikację i wykona jej aktualizację. W poniższym poście przedstawię najważniejsze z poleceń CLI dla Heroku, które z pewnością przydadzą się przy pierwszym uruchomieniu aplikacji w Heroku. Jeśli szukacie informacji o innych rozwiązaniach chmurowych, zachęcam do zapoznania się z postem opisującym najważniejsze z nich.
Instalacja klienta Heroku na komputerze z macOS Link to heading
$ brew install heroku
$ heroku version
$ heroku update
Logowanie do Heroku Link to heading
$ heroku login
Enter your Heroku credentials:
Email: [email protected]
Password: ********
Logged in as [email protected]
Wyświetlenie listy kluczy SSH oraz dodanie nowych Link to heading
$ heroku keys
=== [email protected] keys
ssh-rsa AAAAB3NzaC...6/9me1IXeh seba
$ heroku keys:add
Wyświetlenie listy aplikacji Link to heading
$ heroku apps
=== [email protected] Apps
sebastianczech-notes (eu)
Podłączenie lokalnego repozytorium GIT do Heroku Link to heading
$ heroku git:remote -a sebastianczech-notes
Wdrożenie nowej wersji aplikacji Link to heading
$ git push heroku master
Counting objects: 2, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 274 bytes | 0 bytes/s, done.
Total 2 (delta 1), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote:
remote: -----> Python app detected
remote: -----> Installing requirements with pip
remote:
remote: -----> $ python notes/manage.py collectstatic --noinput
remote: 61 static files copied to '/tmp/build_89fc76d1d9f94b9674b3d27b5faf9841/notes/collectstatic', 49 unmodified.
remote:
remote: -----> Discovering process types
remote: Procfile declares types -> web
remote:
remote: -----> Compressing...
remote: Done: 63.1M
remote: -----> Launching...
remote: Released v20
remote: https://sebastianczech-notes.herokuapp.com/ deployed to Heroku
remote:
remote: Verifying deploy... done.
To https://git.heroku.com/sebastianczech-notes.git
c5e59f5..39d3d25 master -> master
Wyświetlenie informacji o dyno Link to heading
$ heroku ps
Free dyno hours quota remaining this month: 1000h 0m (100%)
For more information on dyno sleeping and how to upgrade, see:
https://devcenter.heroku.com/articles/dyno-sleeping
=== web (Free): cd notes && gunicorn notes.wsgi:application --log-file - (1)
web.1: up 2017/07/30 15:13:23 +0200 (~ 1m ago)
Weryfikacji statusu aplikacji i danych Link to heading
$ heroku status
Apps: No known issues at this time.
Data: No known issues at this time.
Tools: No known issues at this time.
Podłączenie się po shell’u do aplikacji Link to heading
$ heroku run bash
Running bash on ⬢ sebastianczech-notes... up, run.7070 (Free)
~ $ ls -la
total 112
drwx------ 5 u23547 dyno 4096 Jul 30 13:16 .
drwxr-xr-x 15 root root 4096 Feb 24 09:26 ..
drwx------ 7 u23547 dyno 4096 Jul 30 13:12 notes
-rw------- 1 u23547 dyno 62 Jul 30 13:12 Procfile
-rw------- 1 u23547 dyno 162 Jul 30 13:12 requirements.txt
Pokazania aktywnych dodatków Link to heading
$ heroku addons
Add-on Plan Price State
────────────────────────────────────────── ───────── ───── ───────
heroku-postgresql (postgresql-acute-52566) hobby-dev free created
└─ as DATABASE
heroku-redis (redis-rigid-43525) hobby-dev free created
└─ as REDIS
mongolab (mongolab-cubed-59927) sandbox free created
└─ as MONGODB
The table above shows add-ons and the attachments to the current app (sebastianczech-notes) or other apps.
Analiza logów Link to heading
$ heroku logs
...
2017-07-30T13:13:19.699652+00:00 heroku[web.1]: Starting process with command `cd notes && gunicorn notes.wsgi:application --log-file -`
2017-07-30T13:13:22.476236+00:00 app[web.1]: [2017-07-30 13:13:22 +0000] [6] [INFO] Starting gunicorn 19.7.1
2017-07-30T13:13:22.476907+00:00 app[web.1]: [2017-07-30 13:13:22 +0000] [6] [INFO] Listening at: http://0.0.0.0:57456 (6)
2017-07-30T13:13:22.476992+00:00 app[web.1]: [2017-07-30 13:13:22 +0000] [6] [INFO] Using worker: sync
2017-07-30T13:13:22.483545+00:00 app[web.1]: [2017-07-30 13:13:22 +0000] [9] [INFO] Booting worker with pid: 9
2017-07-30T13:13:22.502295+00:00 app[web.1]: [2017-07-30 13:13:22 +0000] [10] [INFO] Booting worker with pid: 10
2017-07-30T13:13:23.384296+00:00 heroku[web.1]: State changed from starting to up
Pomoc Link to heading
$ heroku help
Usage: heroku COMMAND
Help topics, type heroku help TOPIC for more details:
access manage user access to apps
addons tools and services for developing, extending, and operating your app
apps manage apps
auth heroku authentication
authorizations OAuth authorizations
buildpacks manage the buildpacks for an app
certs a topic for the ssl plugin
ci run an application test suite on Heroku
clients OAuth clients on the platform
config manage app config vars
container Use containers to build and deploy Heroku apps
domains manage the domains for an app
drains list all log drains
features manage optional features
git manage local git repository for app
keys manage ssh keys
labs experimental features
local run heroku app locally
logs display recent log output
maintenance manage maintenance mode for an app
members manage organization members
notifications display notifications
orgs manage organizations
pg manage postgresql databases
pipelines manage collections of apps in pipelines
plugins manage plugins
ps manage dynos (dynos, workers)
redis manage heroku redis instances
regions list available regions
releases manage app releases
run run a one-off process inside a Heroku dyno
sessions OAuth sessions
spaces manage heroku private spaces
status status of the Heroku platform
teams manage teams