From 0fc4482bdf570fdf17ed2383d40f22e80523e8dd Mon Sep 17 00:00:00 2001 From: Morgan McMillian Date: Tue, 28 Jan 2020 22:05:49 -0800 Subject: [PATCH] containerize this thing --- .dockerignore | 11 +++++++++++ Dockerfile | 14 ++++++++++++++ models.py | 4 +++- partybot-pnut.py | 36 ++++++++++++++++++++++++++++-------- requirements.txt | 5 +++++ 5 files changed, 61 insertions(+), 9 deletions(-) create mode 100644 .dockerignore create mode 100644 Dockerfile create mode 100644 requirements.txt diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..af7128c --- /dev/null +++ b/.dockerignore @@ -0,0 +1,11 @@ +__pycache__/ +*.py[cod] +*.yaml +*.db +*.sublime-project +*.sublime-workspace +.vscode/ +.git/ +.gitignore +Dockerfile +.dockerignore \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..17c3be1 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,14 @@ +FROM python:alpine3.7 + +VOLUME /data + +WORKDIR /usr/src/app + +COPY requirements.txt ./ +RUN pip install --no-cache-dir -r requirements.txt + +COPY . . + +WORKDIR /data + +CMD [ "python", "/usr/src/app/partybot-pnut.py", "-d", "-c", "config.yaml" ] diff --git a/models.py b/models.py index 17df8e4..9e7ca1d 100644 --- a/models.py +++ b/models.py @@ -1,5 +1,7 @@ from sqlalchemy import Column, ForeignKey, Integer, String, Boolean -from database import Base +from sqlalchemy.ext.declarative import declarative_base + +Base = declarative_base() class Optout(Base): __tablename__ = 'optout' diff --git a/partybot-pnut.py b/partybot-pnut.py index 6fe4fa3..54f74a8 100644 --- a/partybot-pnut.py +++ b/partybot-pnut.py @@ -8,10 +8,13 @@ import time import json import random import re +import argparse -from database import db_session, init_db -from sqlalchemy import and_ -from models import Karma, Optout, Queue, Preferences, MdnpRequests +# from database import db_session, init_db +from sqlalchemy import create_engine, and_ +from sqlalchemy.orm import scoped_session, sessionmaker +from sqlalchemy.ext.declarative import declarative_base +from models import Base, Karma, Optout, Queue, Preferences, MdnpRequests _startup = threading.Event() _shutdown = threading.Event() @@ -348,12 +351,29 @@ def on_open(ws): if __name__ == "__main__": logger = logging.getLogger() - logging.basicConfig(level=logging.DEBUG) + a_parser = argparse.ArgumentParser() + a_parser.add_argument( + '-d', action='store_true', dest='debug', + help="debug logging" + ) + a_parser.add_argument( + '-c', '--config', default="config.yaml", + help="configuration file" + ) + args = a_parser.parse_args() - with open("config.yaml", "rb") as config_file: - config = yaml.load(config_file) - - init_db() + if args.debug: + logging.basicConfig(level=logging.DEBUG) + else: + logging.basicConfig(level=logging.INFO) + + with open(args.config, 'rb') as config_file: + config = yaml.load(config_file, Loader=yaml.SafeLoader) + + engine = create_engine(config['SERVICE_DB']) + db_session = scoped_session(sessionmaker(bind=engine)) + Base.query = db_session.query_property() + Base.metadata.create_all(bind=engine) pnutpy.api.add_authorization_token(config['ACCESS_TOKEN']) diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..9998e26 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,5 @@ +PyYAML +pnutpy +requests +SQLAlchemy +websocket-client \ No newline at end of file