Browse Source

Set up Dockerfile for groupme bot

Kirk Trombley 4 years ago
parent
commit
7635fd816f
4 changed files with 48 additions and 5 deletions
  1. 9 0
      .dockerignore
  2. 1 0
      .gitignore
  3. 29 0
      Dockerfile.groupme
  4. 9 5
      drivers/groupme.py

+ 9 - 0
.dockerignore

@@ -0,0 +1,9 @@
+.git/
+
+*.egg-info
+**/*.egg-info
+*.egg/
+*.pyc
+*.swp
+__pycache__
+**/__pycache__

+ 1 - 0
.gitignore

@@ -6,3 +6,4 @@
 .vscode/
 
 secrets.toml
+rollbot.db

+ 29 - 0
Dockerfile.groupme

@@ -0,0 +1,29 @@
+FROM python:3.9
+
+LABEL maintainer="Kirk Trombley <ktrom3894@gmail.com>"
+
+WORKDIR /app/
+
+RUN mkdir ./data/
+
+ENV DATABASE_FILE="/app/data/rollbot.db"
+
+ENV SECRET_FILE="/app/data/secrets.toml"
+
+EXPOSE 5000
+
+COPY logging.conf .
+
+COPY ./lib/ /app/rollbot
+
+RUN pip3 install -e /app/rollbot
+
+COPY ./src/ /app/commands
+
+RUN pip3 install -e /app/commands
+
+COPY ./drivers/groupme.py .
+
+RUN pip3 install uvicorn fastapi toml
+
+CMD uvicorn groupme:app --host 0.0.0.0 --port 5000 --root-path /rollbot

+ 9 - 5
drivers/groupme.py

@@ -3,6 +3,7 @@ import json
 import traceback
 import asyncio
 import logging
+import os
 
 import toml
 from fastapi import FastAPI, BackgroundTasks, Response
@@ -13,9 +14,9 @@ from commands import config
 
 logging.config.fileConfig("logging.conf", disable_existing_loggers=False)
 
-with open("secrets.toml", "r") as sfile:
+with open(os.environ.get("SECRET_FILE", "secrets.toml"), "r") as sfile:
     secrets = toml.load(sfile)
-database_file = secrets["database_file"]
+database_file = os.environ.get("DATABASE_FILE", secrets["database_file"])
 groupme_bots = secrets["groupme_bots"]
 groupme_token = secrets["groupme_token"]
 groupme_admins = secrets["admins"]["origin"]
@@ -37,9 +38,7 @@ class GroupMeMessage(BaseModel):
 
 class GroupMeBot(rollbot.Rollbot[GroupMeMessage]):
     def __init__(self):
-        super().__init__(
-            config.extend(rollbot.CommandConfiguration(bangs=("!",))), database_file
-        )
+        super().__init__(config.extend(rollbot.CommandConfiguration(bangs=("!",))), database_file)
 
     def read_config(self, key):
         cfg = secrets
@@ -147,3 +146,8 @@ async def shutdown():
 async def receive(message: GroupMeMessage, tasks: BackgroundTasks):
     tasks.add_task(bot.on_message, message)
     return Response(status_code=204)
+
+
+@app.get("/health", status_code=204)
+def health():
+    return Response(status_code=204)