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_ID = ""
OAUTH_CLIENT_SECRET = "" OAUTH_CLIENT_SECRET = ""
OAUTH_REDIRECT_URI = "http://localhost:8080/callback" 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" OAUTH_URL_ACCESS_TOKEN = "https://www.bling.com.br/Api/v3/oauth/token"
# DATABASE # DATABASE
DB_NAME = 'ajusta_bling' POSTGRES_USER = 'ajusta_bling'
DB_USER = 'ajusta_bling' POSTGRES_PASSWORD = 'ajusta_bling'
DB_PASS = 'ajusta_bling' POSTGRES_DB = 'ajusta_bling'
DB_HOST = 'winhost'
DB_PORT = '5432' # 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 argparse
import os import os
from typing import Sequence from typing import Sequence
from dotenv import load_dotenv
""" """
This is always the entry point so you don't technically need to do the 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 __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, type=str,
action=EnvDefault, action=EnvDefault,
required=True, required=True,
envvar="DB_USER", envvar="POSTGRES_USER",
help="PostgreSQL User", help="PostgreSQL User",
) )
@ -52,25 +49,22 @@ def main(argv: Sequence[str] | None = None) -> int:
"--dbpassword", "-dP", "--dbpassword", "-dP",
type=str, type=str,
action=EnvDefault, action=EnvDefault,
envvar="DB_PASS", envvar="POSTGRES_PASSWORD",
help="PostgreSQL Password", help="PostgreSQL Password",
) )
parser.add_argument( parser.add_argument(
"--dbhost", "-dh", "--dbhost", "-dh",
type=str, type=str,
action=EnvDefault, required=False,
required=True, default='db',
envvar="DB_HOST",
help="PostgreSQL Host", help="PostgreSQL Host",
) )
parser.add_argument( parser.add_argument(
"--dbport", "-dp", "--dbport", "-dp",
type=int, type=int,
action=EnvDefault, default=5432,
required=True,
envvar="DB_PORT",
help="PostgreSQL Port", help="PostgreSQL Port",
) )
@ -79,7 +73,7 @@ def main(argv: Sequence[str] | None = None) -> int:
type=str, type=str,
action=EnvDefault, action=EnvDefault,
required=True, required=True,
envvar="DB_NAME", envvar="POSTGRES_DB",
help="PostgreSQL Database", help="PostgreSQL Database",
) )
@ -88,26 +82,24 @@ def main(argv: Sequence[str] | None = None) -> int:
type=str, type=str,
action=EnvDefault, action=EnvDefault,
required=True, required=True,
envvar="WEB_HOST", envvar="FLASK_HOST",
help="Web server host", help="Web server host",
) )
parser.add_argument( parser.add_argument(
"--webport", "-wp", "--webport", "-wp",
type=int, type=int,
action=EnvDefault, default=5000,
required=True,
envvar="WEB_PORT",
help="Web server port", help="Web server port",
) )
parser.add_argument( parser.add_argument(
"--debug", "--env",
type=bool, type=str,
action=EnvDefault, action=EnvDefault,
envvar="WEB_DEBUG", envvar="FLASK_ENV",
default=False, default=False,
help="Enable web server debug", help="Changes flask environment",
) )
args = parser.parse_args(argv) args = parser.parse_args(argv)
@ -121,5 +113,4 @@ def main(argv: Sequence[str] | None = None) -> int:
return 0 return 0
if __name__ == "__main__": if __name__ == "__main__":
load_dotenv(".env") raise SystemExit(main())
raise SystemExit(main())

View File

@ -12,4 +12,4 @@ class Args:
webhost: str webhost: str
webport: int 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] [options.package_data]
ajusta_bling = py.typed ajusta_bling = py.typed
[options.entry_points]
console_scripts =
ajusta_bling = ajusta_bling.__main__:main
[flake8] [flake8]
max-line-length = 160 max-line-length = 160