feat: moved deployment to docker compose

This commit is contained in:
ka 2024-06-20 22:41:57 -03:00
parent cbbbf24259
commit cd531b1ae4
Signed by: ka
GPG Key ID: 77D32BB1496F3FD1
7 changed files with 87 additions and 30 deletions

View File

@ -1,3 +1,4 @@
# OAUTH
OAUTH_CLIENT_ID = ""
OAUTH_CLIENT_SECRET = ""
OAUTH_REDIRECT_URI = "http://localhost:8080/callback"
@ -5,11 +6,13 @@ OAUTH_URL_AUTHORIZE = "https://www.bling.com.br/Api/v3/oauth/authorize"
OAUTH_URL_ACCESS_TOKEN = "https://www.bling.com.br/Api/v3/oauth/token"
# DATABASE
DB_NAME = 'ajusta_bling'
DB_USER = 'ajusta_bling'
DB_PASS = 'ajusta_bling'
DB_HOST = 'winhost'
DB_PORT = '5432'
POSTGRES_USER = 'ajusta_bling'
POSTGRES_PASSWORD = 'ajusta_bling'
POSTGRES_DB = 'ajusta_bling'
# FLASK
FLASK_HOST = "0.0.0.0"
FLASK_PORT = 8080
FLASK_ENV=development
WEB_HOST = "0.0.0.0"
WEB_PORT = "8080"

19
Dockerfile Normal file
View File

@ -0,0 +1,19 @@
FROM python:3.12-alpine3.20
ENV PYTHONUNBUFFERED 1
ENV PYTHONPATH /ajusta_bling
ENV FLASK_APP ajusta_bling.__main__
ENV FLASK_RUN_HOST 0.0.0.0
WORKDIR /app
COPY . /app
RUN pip install --no-cache-dir -r requirements.txt
RUN pip install --no-cache-dir setuptools wheel
RUN pip install --no-cache-dir -e .
EXPOSE 5000
CMD ["python", "-m", "ajusta_bling"]

View File

@ -0,0 +1 @@

View File

@ -1,9 +1,6 @@
import argparse
import os
from typing import Sequence
from dotenv import load_dotenv
"""
This is always the entry point so you don't technically need to do the
__name__ == "__main__" check, but its still common practice to show that
@ -44,7 +41,7 @@ def main(argv: Sequence[str] | None = None) -> int:
type=str,
action=EnvDefault,
required=True,
envvar="DB_USER",
envvar="POSTGRES_USER",
help="PostgreSQL User",
)
@ -52,25 +49,22 @@ def main(argv: Sequence[str] | None = None) -> int:
"--dbpassword", "-dP",
type=str,
action=EnvDefault,
envvar="DB_PASS",
envvar="POSTGRES_PASSWORD",
help="PostgreSQL Password",
)
parser.add_argument(
"--dbhost", "-dh",
type=str,
action=EnvDefault,
required=True,
envvar="DB_HOST",
required=False,
default='db',
help="PostgreSQL Host",
)
parser.add_argument(
"--dbport", "-dp",
type=int,
action=EnvDefault,
required=True,
envvar="DB_PORT",
default=5432,
help="PostgreSQL Port",
)
@ -79,7 +73,7 @@ def main(argv: Sequence[str] | None = None) -> int:
type=str,
action=EnvDefault,
required=True,
envvar="DB_NAME",
envvar="POSTGRES_DB",
help="PostgreSQL Database",
)
@ -88,26 +82,24 @@ def main(argv: Sequence[str] | None = None) -> int:
type=str,
action=EnvDefault,
required=True,
envvar="WEB_HOST",
envvar="FLASK_HOST",
help="Web server host",
)
parser.add_argument(
"--webport", "-wp",
type=int,
action=EnvDefault,
required=True,
envvar="WEB_PORT",
default=5000,
help="Web server port",
)
parser.add_argument(
"--debug",
type=bool,
"--env",
type=str,
action=EnvDefault,
envvar="WEB_DEBUG",
envvar="FLASK_ENV",
default=False,
help="Enable web server debug",
help="Changes flask environment",
)
args = parser.parse_args(argv)
@ -121,5 +113,4 @@ def main(argv: Sequence[str] | None = None) -> int:
return 0
if __name__ == "__main__":
load_dotenv(".env")
raise SystemExit(main())
raise SystemExit(main())

View File

@ -12,4 +12,4 @@ class Args:
webhost: str
webport: int
debug: bool = True
env: str

39
docker-compose.yaml Normal file
View File

@ -0,0 +1,39 @@
services:
web:
build: .
container_name: ajusta_bling_app
ports:
- "${FLASK_PORT}:5000"
environment:
- FLASK_HOST
- FLASK_PORT
- FLASK_ENV
- OAUTH_CLIENT_ID
- OAUTH_CLIENT_SECRET
- OAUTH_REDIRECT_URI
- OAUTH_URL_AUTHORIZE
- OAUTH_URL_ACCESS_TOKEN
- POSTGRES_USER
- POSTGRES_PASSWORD
- POSTGRES_DB
volumes:
- ./ajusta_bling:/app/ajusta_bling
depends_on:
- db
restart: always
command: >
sh -c "python3.12 -m ajusta_bling"
db:
image: postgres:16.3-alpine3.20
container_name: ajusta_bling_db
ports:
- "5432:5432"
environment:
- POSTGRES_USER
- POSTGRES_PASSWORD
- POSTGRES_DB
volumes:
- postgres_data:/var/lib/postgresql/data
volumes:
postgres_data:

View File

@ -36,5 +36,9 @@ testing =
[options.package_data]
ajusta_bling = py.typed
[options.entry_points]
console_scripts =
ajusta_bling = ajusta_bling.__main__:main
[flake8]
max-line-length = 160