Environnement de lancement avec LineBot + Heroku + Docker + Python

Aperçu

Pages principalement référencées

https://devcenter.heroku.com/articles/container-registry-and-runtime

https://github.com/line/line-bot-sdk-python

Créer un environnement de serveur pour linebot dans Docker

Je pense que si vous déployez sur Heroku normal, vous allez pousser requirements.txt et procfile, mais si vous pouvez créer un environnement avec Docker, il sera plus facile de l'utiliser, alors créez un environnement en utilisant Docker. Je fais.

Structure des dossiers

linebot │ .dockerignore │ Dockerfile.heroku │ └─app │ bot.py

Dockerfile.heroku


FROM kyobad/miniconda3-alpine:latest

MAINTAINER K.Kato

RUN pip install --upgrade pip \
    && conda install -y flask \
    && pip install flask gunicorn line-bot-sdk \
    && adduser -D botter \
    && mkdir /home/botter/app

USER botter

COPY ./app /home/botter/app

WORKDIR /home/botter/app

CMD gunicorn -b 0.0.0.0:$PORT bot:app --log-file=-

bot.py


###Ceci est une copie du SDK officiel###
from flask import Flask, request, abort

from linebot import (
    LineBotApi, WebhookHandler
)
from linebot.exceptions import (
    InvalidSignatureError
)
from linebot.models import (
    MessageEvent, TextMessage, TextSendMessage,
)

app = Flask(__name__)

line_bot_api = LineBotApi('YOUR_CHANNEL_ACCESS_TOKEN')
handler = WebhookHandler('YOUR_CHANNEL_SECRET')


@app.route("/callback", methods=['POST'])
def callback():
    # get X-Line-Signature header value
    signature = request.headers['X-Line-Signature']

    # get request body as text
    body = request.get_data(as_text=True)
    app.logger.info("Request body: " + body)

    # handle webhook body
    try:
        handler.handle(body, signature)
    except InvalidSignatureError:
        abort(400)

    return 'OK'


@handler.add(MessageEvent, message=TextMessage)
def handle_message(event):
    line_bot_api.reply_message(
        event.reply_token,
        TextSendMessage(text=event.message.text))


if __name__ == "__main__":
    app.run()

Dans Dockerfile, nous construisons l'environnement pour nous-mêmes. Vous pouvez le changer librement, mais sachez que seul le port ne sera pas reconnu par Heroku à moins que vous ne le définissiez sur `` $ PORT ''.

Comment déployer

Créer une application sur Heroku

https://www.heroku.com/home Souvenez-vous du nom de l'application que vous avez créée (vous pouvez également créer une application en utilisant cli)

Créer une image Docker

De là, je vais travailler avec cli Tout d'abord, connectez-vous au registre avec heroku container: login '' Ensuite, créez une image avec docker -f Dockerfile.heroku build ''. Le nom de l'image sera modifié plus tard, alors n'hésitez pas à le nommer.

Pousser vers Heroku et déployer

Après avoir créé l'image, réécrivez le nom de l'image pour pousser vers Heroku docker tag <image> registry.heroku.com/<app>/<process-type> Ici, <app> '' est le nom de l'application dans heroku, et '' est OK. Et `` docker push registry.heroku.com/ / ''

Cela lancera le conteneur avec l'URL spécifiée! Pratique! Mais ça ne marche toujours nulle part

Définition des variables d'environnement

Étant donné que la clé d'accès et la clé secrète ne sont pas solides dans le code, définissez à l'aide du cli d'heroku heroku config:set ACCESS_TOKEN=hogehoge --app appname Et ainsi de suite, définissez les variables d'environnement depuis la console.

Lorsque cela est fait, le retour du perroquet doit être terminé

Recommended Posts

Environnement de lancement avec LineBot + Heroku + Docker + Python
Préparer l'environnement python3 avec Docker
Créez un bot LINE avec Python + heroku
Construire un environnement Mysql + Python avec docker
Créer un environnement Jupyter Lab (Python) avec Docker
Créer un environnement Python + uWSGI + Nginx avec Docker
Lancez l'application Flask avec Docker sur Heroku
Utiliser python avec docker
environnement python avec docker-compose
Environnement virtuel avec Python 3.6
Préparer l'environnement d'exécution de Python3 avec Docker
[Python] Créer un environnement de développement Django avec Docker
Créer un environnement de Nginx + uWSGI + Python (Django) avec docker
Installer l'environnement Python avec Anaconda
Pour pouvoir utiliser le japonais avec Python dans l'environnement Docker
Gérez l'environnement python avec virtualenv
[Python] Construction de l'environnement OpenCV avec Docker (cv2.imshow () fonctionne également)
Créer un environnement python3 avec ubuntu 16.04
Lancer une application Web Python sur Nginx + Gunicorn avec Docker
Construire un environnement python avec direnv
De la construction de l'environnement au déploiement pour flask + Heroku avec Docker
Créez un environnement de développement Python simple avec VSCode et Docker Desktop
Configurer un environnement Python moderne avec Homebrew
Créez un environnement virtuel avec Python!
Créer un environnement virtuel avec Python 3
environnement en ligne du serveur de code (5) Lancer le serveur de code sur Docker
Construction de l'environnement Python3 avec pyenv-virtualenv (CentOS 7.3)
Construction de l'environnement pytorch @ python3.8 avec pipenv
Configurer un environnement de développement Python avec Atom
Reconstruisez l'environnement de développement de Django avec Docker! !! !! !!
[docker] Construction de l'environnement python3.5 + numpy + matplotlib
Développement d'applications avec Docker + Python + Flask
lancement de python
[Pyenv] Construire un environnement python avec ubuntu 16.04
[Ubuntu 18.04] Créer un environnement Python avec pyenv + pipenv
[Python] Création d'un environnement avec Anaconda [Mac]
Programmation de compétition avec les paramètres de l'environnement local python
Changer l'environnement Python 64 bits en environnement 32 bits avec Anaconda
[Environnement de développement] Python avec Xcode [Avec transition d'écran]
Utilisez smbus avec python3 sous environnement pyenv
J'ai essayé linebot avec flacon (anaconda) + heroku
Utilisation de venv dans un environnement Windows + Docker [Python]
Derrière le flyer: utiliser Docker avec Python
[Python] Créez un environnement virtuel avec Anaconda
Laissez Heroku faire le traitement en arrière-plan avec Python
Création d'un environnement Python 3.6 avec Windows + PowerShell
Utiliser le chiffrement de la bibliothèque de chiffrement avec l'image Python de Docker
Création d'un environnement Ubuntu, Python, OpenCV sur Docker
Application Web facile avec Python + Flask + Heroku
[Linux] Créer un environnement Jenkins avec Docker
Exécutez une application Web Python avec Docker
Créez un environnement virtuel pour python avec pyenv
Nettoyer l'environnement python avec Pythonz et virtualenv