この記事はSlack Advent Calendar 2020の20日目の記事です. Slack周りの開発は incoming webhook が多いためそろそろ本腰入れて,Bolt で開発してみようと最近思い始めました.
今回はかなり初歩的な話ですがその Slack Bolt で Slack App の開発ができる Docker 環境を作ってみたので今回はそれについてまとめてみます.
作ったもの
作ったものはこちらです. github.com
「Bolt 入門ガイド」で入力するコマンドを基に作ってみました. slack.dev
まだそこまで作り込めていませんが,少し工夫した点を言うとenv_file:でプロジェクト直下に作成した..envを読み込むようにしています.
# docker-compose.yml version: '3' services: bolt: build: . tty: true env_file: - ./.env volumes: - ./:/myapp - node_modules:/myapp/node_modules working_dir: /myapp command: node app.js ports: - 3000:3000 volumes: node_modules:
使い方
※動かすには「Bolt 入門ガイド」にあるイベントの設定まで進め,自分のワークスペースに Slack App を作る必要があります.
また,ngrokも事前にローカルで起動しておきます.
$ngrok http 3000
起動後に発行されたURLを「Event Subscriptions」のRequest URLに「発行されたURL/slack/events」で登録し,「Save Changes」を押します.
ここをよく,「/slack/events」を忘れて「発行されたURL」のみで入力し,ngrok Request URL Your URL didn't respond with the value of the challenge parameter.
と表示されて混乱していました😅

プロジェクト直下に.envを作成し,以下の項目を設定します.
# .env # ここに Signing Secret を入れる SLACK_SIGNING_SECRET=12345678910 # ここに Bot User OAuth Access Token を入れる SLACK_BOT_TOKEN=xoxb-☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓
docker-compose buildをすると,package.jsonに入っている@slack/boltとdotenvがインストールされます.
$docker-compose build
docker-compose upまたはdocker-compose run --rm --service-ports bolt node app.jsを実行し,Terminalに「⚡️ Bolt app is running!」が表示されれば成功です.
$docker-compose up Creating network "slack-bolt_default" with the default driver Creating slack-bolt_bolt_1 ... done Attaching to slack-bolt_bolt_1 bolt_1 | ⚡️ Bolt app is running!
特定のチャンネルまたは Slack App との DMで hello を含めたメッセージを送ると返事をしてくれます👋.

まとめと所感
今回は Slack Bolt で Slack App の開発ができる Docker 環境を作ってみました.
Slack Bolt を触るのはだいぶ久しぶりでしたが,やはり楽しいですね. 今回はだいぶSlack App入門的な記事になりましたが,これからこのDocker環境をベースに便利で楽しい Slack App を作ってみようと思います.