I am trying to update the settings (services.concurrency in fly.toml) for a rather bloated node app from a location with poor internet access. Deployment keeps failing after about 10-20 minutes.
Is there a way to update the settings without doing flyctl deploy?
Hmm. I know you can trigger a new release by changing the secrets, using the fly secrets ... command (like to add a new one). That won’t need any files uploading. However therefore I’m not sure if it would apply any changes to fly.toml. Could be worth a try.
The other option would be to use the remote builder using fly deploy --remote-only to minimise the files that need uploading at all. Normally a node app should just be code files (and some static files, like images). You would exclude the enormous node_modules folder, for example, using a .dockerignore. And so unless you have a huge amount of code, that should reduce the amount of files that need moving to the bare minimum, with all the vm-stuff handled remotely (no need to upload a huge image). So there would be kb of data to upload, which even on a bad connection shouldn’t be long.
Status: Downloaded newer image for heroku/pack:20
Error failed to fetch an image or build from source: executing lifecycle: io: read/write on closed pipe
I’ve given secrets set a go - will take a while to see if the setting has been updated.
Remote builds would help here! How big is your source tree? It could be taking a while to upload your build context each time.
If you don’t have a .dockerignore filr, try adding one to at least include node_modules. You can use du -sh -- * | sort -h to see what other large files may be lurking in there.
I had a dockerignore which contained node_modules - however I’ve just spotted that .git/ is 85M in size because someone had put lots of images in the source tree years ago and then removed them.
I’ve added .git to .dockerignore - I’m no longer in the location with poor internet access but hopefully next time --remote-only will work better for me.