Starten Sie die Umgebung mit LineBot + Heroku + Docker + Python

Überblick

Hauptsächlich referenzierte Seiten

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

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

Erstellen Sie eine Serverumgebung für Linebot in Docker

Ich denke, wenn Sie auf normalem Heroku bereitstellen, werden Sie die Anforderungen.txt und procfile pushen. Wenn Sie jedoch eine Umgebung mit Docker erstellen können, ist die Verwendung einfacher. Erstellen Sie daher eine Umgebung mit Docker. Ich mache.

Ordnerstruktur

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


###Dies ist eine Kopie des offiziellen SDK###
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()

In Dockerfile bauen wir die Umgebung für uns. Sie können es frei ändern, aber seien Sie vorsichtig, da Heroku es nur erkennt, wenn Sie "$ PORT" auf den Port setzen.

Bereitstellen

Erstellen Sie eine Anwendung auf Heroku

https://www.heroku.com/home Merken Sie sich den Namen der von Ihnen erstellten Anwendung (Sie können eine Anwendung auch mit cli erstellen).

Erstellen Sie ein Docker-Image

Von hier aus werde ich mit cli arbeiten Melden Sie sich zunächst mit heroku container: login bei der Registrierung an Als nächstes erstellen Sie ein Image mit docker -f Dockerfile.heroku build. Der Bildname wird später geändert, Sie können ihn also gerne benennen.

Auf Heroku drücken und bereitstellen

Schreiben Sie nach dem Erstellen des Bildes den Bildnamen neu, um ihn an Heroku weiterzuleiten docker tag <image> registry.heroku.com/<app>/<process-type> Hier ist <app> der Anwendungsname in Heroku und <Prozess-Typ> `ist OK. Und Docker Push Registry.heroku.com/ <app> / <Prozess-Typ>

Dadurch wird der Container mit der angegebenen URL gestartet! Praktisch! Aber es funktioniert immer noch nirgendwo

Umgebungsvariablen einstellen

Da der Zugriffsschlüssel und der geheime Schlüssel im Code nicht fest sind, stellen Sie sie mit Herokus CLI ein heroku config:set ACCESS_TOKEN=hogehoge --app appname Legen Sie die Umgebungsvariablen über die Konsole fest.

Wenn dies erledigt ist, sollte die Papageienrückgabe abgeschlossen sein

Recommended Posts

Starten Sie die Umgebung mit LineBot + Heroku + Docker + Python
Bereiten Sie die Python3-Umgebung mit Docker vor
Erstelle einen LINE-Bot mit Python + Heroku
Erstellen Sie eine MySQL + Python-Umgebung mit Docker
Erstellen Sie mit Docker eine Jupyter Lab (Python) -Umgebung
Erstellen Sie mit Docker eine Python + uWSGI + Nginx-Umgebung
Starten Sie die Flask-Anwendung mit Docker auf Heroku
Verwenden Sie Python mit Docker
Python-Umgebung mit Docker-Compose
Virtuelle Umgebung mit Python 3.6
Bereiten Sie die Ausführungsumgebung von Python3 mit Docker vor
[Python] Erstellen Sie mit Docker eine Django-Entwicklungsumgebung
Erstellen Sie mit Docker eine Umgebung aus Nginx + uWSGI + Python (Django)
Installieren Sie die Python-Umgebung mit Anaconda
Um Japanisch mit Python in der Docker-Umgebung verwenden zu können
Verwalten Sie die Python-Umgebung mit virtualenv
[Python] OpenCV-Umgebungskonstruktion mit Docker (cv2.imshow () funktioniert auch)
Erstellen Sie eine Python3-Umgebung mit Ubuntu 16.04
Starten Sie mit Docker eine Python-Webanwendung auf Nginx + Gunicorn
Erstellen Sie mit direnv eine Python-Umgebung
Vom Umgebungsaufbau bis zum Einsatz für Kolben + Heroku mit Docker
Erstellen Sie mit VSCode & Docker Desktop eine einfache Python-Entwicklungsumgebung
Richten Sie mit Homebrew eine moderne Python-Umgebung ein
Erstellen Sie eine virtuelle Umgebung mit Python!
Erstellen einer virtuellen Umgebung mit Python 3
Code-Server-Online-Umgebung (5) Starten Sie den Code-Server auf Docker
Python3-Umgebungskonstruktion mit pyenv-virtualenv (CentOS 7.3)
pytorch @ python3.8 Umgebungskonstruktion mit pipenv
Richten Sie mit Atom eine Python-Entwicklungsumgebung ein
Erstellen Sie die Entwicklungsumgebung von Django mit Docker neu! !! !! !!
[Docker] Python3.5 + Numpy + Matplotlib-Umgebungskonstruktion
Anwendungsentwicklung mit Docker + Python + Flask
Python-Start
[Pyenv] Erstellen einer Python-Umgebung mit Ubuntu 16.04
[Ubuntu 18.04] Erstellen Sie eine Python-Umgebung mit pyenv + pipenv
[Python] Erstellen einer Umgebung mit Anaconda [Mac]
Wettbewerbsprogrammierung mit Python Lokale Umgebungseinstellungen
Ändern Sie die Python 64-Bit-Umgebung mit Anaconda in eine 32-Bit-Umgebung
[Entwicklungsumgebung] Python mit Xcode [Mit Bildschirmübergang]
Verwenden Sie smbus mit python3 in einer pyenv-Umgebung
Ich habe Linebot mit Flasche (Anaconda) + Heroku ausprobiert
Verwenden von venv in der Windows + Docker-Umgebung [Python]
Hinter dem Flyer: Docker mit Python verwenden
[Python] Erstellen Sie mit Anaconda eine virtuelle Umgebung
Lassen Sie Heroku die Hintergrundverarbeitung mit Python durchführen
Erstellen einer Python 3.6-Umgebung mit Windows + PowerShell
Verwenden Sie die Verschlüsselung der Verschlüsselungsbibliothek mit dem Python-Image von Docker
Erstellt Ubuntu, Python, OpenCV-Umgebung auf Docker
Einfache Web-App mit Python + Flask + Heroku
[Linux] Erstellen einer Jenkins-Umgebung mit Docker
Führen Sie eine Python-Webanwendung mit Docker aus
Erstellen Sie mit pyenv eine virtuelle Umgebung für Python
Bereinigen Sie die Python-Umgebung mit Pythonz und virtualenv