diff --git a/Dockerfile b/Dockerfile index b9cab02a..25e21bc5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,19 +1,14 @@ FROM tiangolo/uvicorn-gunicorn-fastapi:python3.7 -# ENVS RECOMENDATIONS -ENV PYTHONDONTWRITEBYTECODE 1 -ENV PYTHONUNBUFFERED 1 - -# PREPARE FOLDER -WORKDIR /api +ENV VARIABLE_NAME APP # COPY DEPENDENCIES COPY requirements.txt ./ +# COPY PROJECT +COPY ./app /app/app + # INSTALL DEPENDENCIES RUN pip install --no-cache-dir -r requirements.txt -# COPY PROJECT -COPY . /api/ - -CMD ["uvicorn", "--host", "0.0.0.0", "app.main:APP"] \ No newline at end of file +EXPOSE 80 diff --git a/tasks.py b/tasks.py index bf2a60df..347102b7 100644 --- a/tasks.py +++ b/tasks.py @@ -9,6 +9,8 @@ invoke sort invoke check """ +import random + import invoke TARGETS_DESCRIPTION = "Paths/directories to format. [default: . ]" @@ -71,3 +73,17 @@ def generate_reqs(ctx): """Generate requirements.txt""" reqs = ["pipenv lock -r > requirements.txt", "pipenv lock -r --dev > requirements-dev.txt"] [ctx.run(req) for req in reqs] + + +@invoke.task +def docker( + ctx, build=False, run=False, tag="covid-tracker-api:latest", port=80, name=f"covid-api-{random.randint(0,999)}" +): # pylint: disable=too-many-arguments + """Build and run docker container.""" + if not any([build, run]): + raise invoke.Exit(message="Specify either --build or --run", code=1) + if build: + docker_cmds = ["build", "."] + else: + docker_cmds = ["run", "-p", str(port), "--name", name] + ctx.run(" ".join(["docker", *docker_cmds, "-t", tag]))