Skip to content

Commit

Permalink
➕ Use Poetry for package management (#144)
Browse files Browse the repository at this point in the history
* use poetry insted of Pipfile

* fix python black version

* set prepare.sh as executable

* revert postgres 11

* use multi-build stage in docker

* fix poetry path

* 🔥 Remove uneeded changes

* 🔧 Move and update Poetry file

* 🙈 Update gitignore

* 🐳 Update Dockerfiles to use Poetry

* 🐳 Update Dockerfiles with Poetry

* 🔧 Add SERVER_NAME required by Celery worker

* 🐳 Update Poetry install to avoid env conflicts

* ➕ Add Pytest to Poetry dependencies

Co-authored-by: Sebastián Ramírez <[email protected]>
  • Loading branch information
RCheese and tiangolo authored Apr 18, 2020
1 parent 0a194b3 commit c8bcc0b
Show file tree
Hide file tree
Showing 8 changed files with 76 additions and 44 deletions.
2 changes: 1 addition & 1 deletion scripts/discard-dev-files.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
rm -rf \{\{cookiecutter.project_slug\}\}/.git
rm -rf \{\{cookiecutter.project_slug\}\}/backend/app/Pipfile.lock
rm -rf \{\{cookiecutter.project_slug\}\}/backend/app/poetry.lock
rm -rf \{\{cookiecutter.project_slug\}\}/frontend/node_modules
rm -rf \{\{cookiecutter.project_slug\}\}/frontend/dist
git checkout \{\{cookiecutter.project_slug\}\}/README.md
Expand Down
1 change: 1 addition & 0 deletions {{cookiecutter.project_slug}}/backend/.gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
__pycache__
app.egg-info
39 changes: 0 additions & 39 deletions {{cookiecutter.project_slug}}/backend/app/Pipfile

This file was deleted.

40 changes: 40 additions & 0 deletions {{cookiecutter.project_slug}}/backend/app/pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
[tool.poetry]
name = "app"
version = "0.1.0"
description = ""
authors = ["Admin <[email protected]>"]

[tool.poetry.dependencies]
python = "^3.7"
uvicorn = "^0.11.3"
fastapi = "^0.54.1"
pyjwt = "^1.7.1"
python-multipart = "^0.0.5"
email-validator = "^1.0.5"
requests = "^2.23.0"
celery = "^4.4.2"
passlib = {extras = ["bcrypt"], version = "^1.7.2"}
tenacity = "^6.1.0"
pydantic = "^1.4"
emails = "^0.5.15"
raven = "^6.10.0"
gunicorn = "^20.0.4"
jinja2 = "^2.11.2"
psycopg2-binary = "^2.8.5"
alembic = "^1.4.2"
sqlalchemy = "^1.3.16"
pytest = "^5.4.1"

[tool.poetry.dev-dependencies]
mypy = "^0.770"
black = "^19.10b0"
isort = "^4.3.21"
autoflake = "^1.3.1"
flake8 = "^3.7.9"
pytest = "^5.4.1"
jupyter = "^1.0.0"
vulture = "^1.4"

[build-system]
requires = ["poetry>=0.12"]
build-backend = "poetry.masonry.api"
13 changes: 11 additions & 2 deletions {{cookiecutter.project_slug}}/backend/backend.dockerfile
Original file line number Diff line number Diff line change
@@ -1,6 +1,16 @@
FROM tiangolo/uvicorn-gunicorn-fastapi:python3.7

RUN pip install celery~=4.3 passlib[bcrypt] tenacity requests emails "fastapi>=0.47.0" "uvicorn>=0.11.1" gunicorn pyjwt python-multipart email-validator jinja2 psycopg2-binary alembic SQLAlchemy
WORKDIR /app/

# Install Poetry
RUN curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | POETRY_HOME=/opt/poetry python && \
cd /usr/local/bin && \
ln -s /opt/poetry/bin/poetry && \
poetry config virtualenvs.create false

# Copy poetry.lock* in case it doesn't exist in the repo
COPY ./app/pyproject.toml ./app/poetry.lock* /app/
RUN poetry install --no-dev --no-root

# For development, Jupyter remote kernel, Hydrogen
# Using inside the container:
Expand All @@ -10,7 +20,6 @@ RUN bash -c "if [ $env == 'dev' ] ; then pip install jupyterlab ; fi"
EXPOSE 8888

COPY ./app /app
WORKDIR /app/

ENV PYTHONPATH=/app

Expand Down
12 changes: 11 additions & 1 deletion {{cookiecutter.project_slug}}/backend/celeryworker.dockerfile
Original file line number Diff line number Diff line change
@@ -1,6 +1,16 @@
FROM python:3.7

RUN pip install raven celery~=4.3 passlib[bcrypt] tenacity requests "fastapi>=0.47.0" emails pyjwt email-validator jinja2 psycopg2-binary alembic SQLAlchemy
WORKDIR /app/

# Install Poetry
RUN curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | POETRY_HOME=/opt/poetry python && \
cd /usr/local/bin && \
ln -s /opt/poetry/bin/poetry && \
poetry config virtualenvs.create false

# Copy poetry.lock* in case it doesn't exist in the repo
COPY ./app/pyproject.toml ./app/poetry.lock* /app/
RUN poetry install --no-dev --no-root

# For development, Jupyter remote kernel, Hydrogen
# Using inside the container:
Expand Down
12 changes: 11 additions & 1 deletion {{cookiecutter.project_slug}}/backend/tests.dockerfile
Original file line number Diff line number Diff line change
@@ -1,6 +1,16 @@
FROM python:3.7

RUN pip install requests pytest tenacity passlib[bcrypt] "fastapi>=0.47.0" email-validator psycopg2-binary SQLAlchemy
WORKDIR /app/

# Install Poetry
RUN curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | POETRY_HOME=/opt/poetry python && \
cd /usr/local/bin && \
ln -s /opt/poetry/bin/poetry && \
poetry config virtualenvs.create false

# Copy poetry.lock* in case it doesn't exist in the repo
COPY ./app/pyproject.toml ./app/poetry.lock* /app/
RUN poetry install --no-dev --no-root

# For development, Jupyter remote kernel, Hydrogen
# Using inside the container:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,5 @@ services:
- env-postgres.env
- env-backend.env
environment:
- SERVER_NAME=${DOMAIN}
- SERVER_HOST=https://${DOMAIN}

0 comments on commit c8bcc0b

Please sign in to comment.