fullctl / ixctl

Apache License 2.0
2 stars 4 forks source link

Replace Pipenv with Poetry in DockerFile #37

Closed egfrank closed 3 years ago

egfrank commented 3 years ago

It seems like it makes sense to do this at the same time as https://github.com/fullctl/ixctl/issues/36

I made pretty good progress on this issue today, using what they recommend in this:

https://stackoverflow.com/questions/53835198/integrating-python-poetry-with-docker

egfrank commented 3 years ago

The only problem I'm running into so far is that currently we're downloading fullctl and peeringdb-py via file references:

fullctl = {file = "https://github.com/fullctl/fullctl/archive/master.zip"}
peeringdb = {file = "https://github.com/peeringdb/peeringdb-py/archive/july_updates.zip"}

This doesn't translate well to the step where we export the poetry deps to a requirements.txt file and install with pip, since poetry and pip handle these files differently.

RUN poetry export -f requirements.txt --without-hashes | "$VIRTUAL_ENV"/bin/pip install -r /dev/stdin

One solution might be downloading git to the builder container so pip can git install fullctl as opposed to trying to do a file install. I think this would slow down the build process a bit but I don't see any other drawbacks.

That being said, in practice I've had to download fullctl as editable in my container when doing development. So we could just expect to do that for fullctl and peeringdb and install them that way? Idk.

egfrank commented 3 years ago

Okay I just avoided the whole pip issue and am using poetry to install into the virtualenv. This looks like it's working!