ryansurf / cli-surf

Get surf and ocean data from the command line interface
MIT License
18 stars 30 forks source link

Docker fails on Linux BookWorm #86

Closed ryansurf closed 3 months ago

ryansurf commented 3 months ago

Seems like build tools & gcc had to be installed:

RUN apk add --no-cache build-base libffi-dev

hotpocket commented 3 months ago

this still fails for me with the error error: command 'cmake' failed: No such file or directory it seems cmake isn't installed. After much time down this rabbit hole the list of dependencies does not appear obvious to me. I'm an ubuntu guy, don't know if there is some alpine magic I'm unaware of that could help me track down what I need.

I found this https://gist.github.com/bskaggs/fc3c8d0d553be54e2645616236fdc8c6 but this is a substantial lift, and even involves patching C code for apache ...

This works fine if I build this in my local ubuntu environment, and am tempted to suggest switching to an ubuntu docker image but wanted to get some feedback here as a sane first step.

my attempts at debugging have been to comment out the RUN poetry install --no-interaction --no-ansi in the Dockerfile and then run docker build -t cli-surf . followed by docker run --rm -it --entrypoint sh cli-surf so I can play around inside the container. I have not had any luck determining how to get the poetry install to work correctly.

hotpocket commented 3 months ago

@camrionnvmff this reads like a bot 😐

and advertises for a product. that comment should be removed

hotpocket commented 3 months ago

I would like to claim this ticket for myself. I see this as important to have functional to enable easier collab.

ryansurf commented 3 months ago

Hey @hotpocket

So the issue lies in pyarrow, a dependency for streamlit. In the pyproject.toml file, i removed the streamlit dependency and docker was able to build the image. We do want to be able to use streamlit going forward, so this isn't a permanent solution

This would be a good place to start. Ill assign the issue to you now.

Also, it seems like we should be using binaries, when able. There was a problem with matplotlib a few days back

ryansurf commented 3 months ago

@camrionnvmff this reads like a bot 😐

and advertises for a product. that comment should be removed

comment has been sent to the gulag

hotpocket commented 3 months ago

Hey @hotpocket

So the issue lies in pyarrow, a dependency for streamlit. In the pyproject.toml file, i removed the streamlit dependency and docker was able to build the image. We do want to be able to use streamlit going forward, so this isn't a permanent solution

This would be a good place to start. Ill assign the issue to you now.

Also, it seems like we should be using binaries, when able. There was a problem with matplotlib a few days back

I have found two things while digging on this:

I'm happy to switch images & test if you want.


What direction do we want to take on this?

ryansurf commented 3 months ago

@hotpocket

Thanks for looking into this. I agree, based on the links you provided it seems that Alpine isn't the ideal distro.

We were working with the Debian "slim" distro up until a few weeks ago.

Perhaps we can revert back to this. If you'd like to test another image, please do

hotpocket commented 3 months ago

PR #107 submitted. This uses the standard python docker image.

hotpocket commented 3 months ago

@hotpocket

Thanks for looking into this. I agree, based on the links you provided it seems that Alpine isn't the ideal distro.

We were working with the Debian "slim" distro up until a few weeks ago.

Perhaps we can revert back to this. If you'd like to test another image, please do

Interesting project. Perhaps this could be a seperate ticket? Use docker-slim to make the image as small as possible? Maybe even push it to docker hub and have it mount a volume instead of copy it so that it can run with the current local development sources?