Hauptsächlich referenzierte Seiten
https://devcenter.heroku.com/articles/container-registry-and-runtime
https://github.com/line/line-bot-sdk-python
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.
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.
https://www.heroku.com/home Merken Sie sich den Namen der von Ihnen erstellten Anwendung (Sie können eine Anwendung auch mit cli erstellen).
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.
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
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