➕ Use Poetry for package management (#144)
* 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 <tiangolo@gmail.com>
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
rm -rf \{\{cookiecutter.project_slug\}\}/.git
|
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/node_modules
|
||||||
rm -rf \{\{cookiecutter.project_slug\}\}/frontend/dist
|
rm -rf \{\{cookiecutter.project_slug\}\}/frontend/dist
|
||||||
git checkout \{\{cookiecutter.project_slug\}\}/README.md
|
git checkout \{\{cookiecutter.project_slug\}\}/README.md
|
||||||
|
@@ -1 +1,2 @@
|
|||||||
__pycache__
|
__pycache__
|
||||||
|
app.egg-info
|
||||||
|
@@ -1,39 +0,0 @@
|
|||||||
[[source]]
|
|
||||||
name = "pypi"
|
|
||||||
url = "https://pypi.org/simple"
|
|
||||||
verify_ssl = true
|
|
||||||
|
|
||||||
[dev-packages]
|
|
||||||
mypy = "*"
|
|
||||||
black = "*"
|
|
||||||
jupyter = "*"
|
|
||||||
isort = "*"
|
|
||||||
autoflake = "*"
|
|
||||||
flake8 = "*"
|
|
||||||
pytest = "*"
|
|
||||||
vulture = "*"
|
|
||||||
|
|
||||||
[packages]
|
|
||||||
fastapi = "*"
|
|
||||||
uvicorn = "*"
|
|
||||||
pyjwt = "*"
|
|
||||||
python-multipart = "*"
|
|
||||||
email-validator = "*"
|
|
||||||
requests = "*"
|
|
||||||
celery = "*"
|
|
||||||
passlib = {extras = ["bcrypt"],version = "*"}
|
|
||||||
tenacity = "*"
|
|
||||||
pydantic = "*"
|
|
||||||
emails = "*"
|
|
||||||
raven = "*"
|
|
||||||
gunicorn = "*"
|
|
||||||
jinja2 = "*"
|
|
||||||
psycopg2-binary = "*"
|
|
||||||
alembic = "*"
|
|
||||||
sqlalchemy = "*"
|
|
||||||
|
|
||||||
[requires]
|
|
||||||
python_version = "3.6"
|
|
||||||
|
|
||||||
[pipenv]
|
|
||||||
allow_prereleases = true
|
|
40
{{cookiecutter.project_slug}}/backend/app/pyproject.toml
Normal file
40
{{cookiecutter.project_slug}}/backend/app/pyproject.toml
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
[tool.poetry]
|
||||||
|
name = "app"
|
||||||
|
version = "0.1.0"
|
||||||
|
description = ""
|
||||||
|
authors = ["Admin <admin@example.com>"]
|
||||||
|
|
||||||
|
[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"
|
@@ -1,6 +1,16 @@
|
|||||||
FROM tiangolo/uvicorn-gunicorn-fastapi:python3.7
|
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
|
# For development, Jupyter remote kernel, Hydrogen
|
||||||
# Using inside the container:
|
# Using inside the container:
|
||||||
@@ -10,7 +20,6 @@ RUN bash -c "if [ $env == 'dev' ] ; then pip install jupyterlab ; fi"
|
|||||||
EXPOSE 8888
|
EXPOSE 8888
|
||||||
|
|
||||||
COPY ./app /app
|
COPY ./app /app
|
||||||
WORKDIR /app/
|
|
||||||
|
|
||||||
ENV PYTHONPATH=/app
|
ENV PYTHONPATH=/app
|
||||||
|
|
||||||
|
@@ -1,6 +1,16 @@
|
|||||||
FROM python:3.7
|
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
|
# For development, Jupyter remote kernel, Hydrogen
|
||||||
# Using inside the container:
|
# Using inside the container:
|
||||||
|
@@ -1,6 +1,16 @@
|
|||||||
FROM python:3.7
|
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
|
# For development, Jupyter remote kernel, Hydrogen
|
||||||
# Using inside the container:
|
# Using inside the container:
|
||||||
|
@@ -17,4 +17,5 @@ services:
|
|||||||
- env-postgres.env
|
- env-postgres.env
|
||||||
- env-backend.env
|
- env-backend.env
|
||||||
environment:
|
environment:
|
||||||
|
- SERVER_NAME=${DOMAIN}
|
||||||
- SERVER_HOST=https://${DOMAIN}
|
- SERVER_HOST=https://${DOMAIN}
|
||||||
|
Reference in New Issue
Block a user