diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..c18dd8d --- /dev/null +++ b/.dockerignore @@ -0,0 +1 @@ +__pycache__/ diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..ee7a8e5 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,14 @@ +FROM python:3.11-slim + +RUN pip3 install poetry +RUN poetry config virtualenvs.create false + +RUN mkdir /opt/app +WORKDIR /opt/app + +COPY pyproject.toml poetry.lock ./ +RUN poetry install --no-dev + +COPY ./ ./ + +CMD ["gunicorn", "--bind", "0.0.0.0"] diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 0000000..9fbc182 --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,6 @@ +services: + app: + build: . + init: true + ports: + - "127.0.0.1:5123:8000" diff --git a/gunicorn.conf.py b/gunicorn.conf.py new file mode 100644 index 0000000..7f8e09b --- /dev/null +++ b/gunicorn.conf.py @@ -0,0 +1 @@ +wsgi_app = 'app:app' diff --git a/poetry.lock b/poetry.lock index d6261b3..97a47df 100644 --- a/poetry.lock +++ b/poetry.lock @@ -44,6 +44,20 @@ Werkzeug = ">=2.3.3" async = ["asgiref (>=3.2)"] dotenv = ["python-dotenv"] +[[package]] +name = "gunicorn" +version = "20.1.0" +description = "WSGI HTTP Server for UNIX" +category = "main" +optional = false +python-versions = ">=3.5" + +[package.extras] +eventlet = ["eventlet (>=0.24.1)"] +gevent = ["gevent (>=1.4.0)"] +setproctitle = ["setproctitle"] +tornado = ["tornado (>=0.2)"] + [[package]] name = "itsdangerous" version = "2.1.2" @@ -164,13 +178,14 @@ watchdog = ["watchdog (>=2.3)"] [metadata] lock-version = "1.1" python-versions = "^3.10" -content-hash = "eb105df2967c9247e5d32c49b9996442ba31976fb4da0c99bffa003aa8242182" +content-hash = "1a5905d329305a82f0568b7fdea227b713ee393a14f79e5247af77551ffda804" [metadata.files] blinker = [] click = [] colorama = [] flask = [] +gunicorn = [] itsdangerous = [] jinja2 = [] lml = [] diff --git a/pyproject.toml b/pyproject.toml index 19356cd..0ab192a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -10,6 +10,7 @@ sox = "^1.4.1" Jinja2 = "^3.1.2" pyexcel-odsr = "^0.6.0" Flask = "^2.3.2" +gunicorn = "^20.1.0" [tool.poetry.dev-dependencies]