f0rest8
Where is the server’s priv folder on Fly? I’m having trouble finding a file that I hope is being copied correctly during deployment.
For more context, for Metamorphic’s passphrase generator it uses the eff_large_wordlist.txt and subsequent strategy.
The GenServer for this is started in the Application:
...
# Start the word retrieval GenServer API for password generator.
{Metamorphic.Extensions.PasswordGenerator.WordRepository, %{}},
...
Then, there’s a WordLoader file that calls:
# I've also used Application.app_dir(@otp_app, "/priv/dict/eff_large_wordlist.txt")
# with success locally.
@word_list_contents File.stream!(
Path.join(:code.priv_dir(@otp_app), "/dict/eff_large_wordlist.txt")
)
This worked great in deployment with Render and locally. When deploying to Fly I run into the enoent error and that it was looking for the file at /app/_build/prod/lib/<@otp_app>/priv/dict/eff_large_wordlist.txt.
In the Docker file it runs the command COPY priv priv.
My local file structure root priv directory looks like /home/user/github/name/priv.
I’m not super familiar with Docker, but my understanding is that COPY priv priv is copying all the files in my priv folder over to a priv folder for the server on Fly. Is it copying the folder structure? I’ve used both Application.app_dir/2 and :code.priv_dir/1 and both work except for deployment to Fly (which my thinking is because I’m either not copying the file over and/or not finding it correctly).
Thanks for any help ![]()
Trending in Questions
Other Trending Topics
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #library
- #deployment
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #elixirconf
- #channels
- #exunit
- #discussion
- #code-sync
- #podcasts
- #javascript
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixirconf-us
- #ai
- #blog-post
- #elixir-ls
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #metaprogramming
- #hex
- #security











Showing Posts 1 to 7- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
tj0
So in my production deploy, it is in:
The rest of libraries also have a priv directory.
I’m accessing that directory via:
It seems you’ve already tried these though, so I’m not sure exactly what you’re missing.
I’d suggest logging in via ssh and checking if the file exists on disk.
f0rest8
Thank you! I should have ssh’d in and checked. That revealed that it was in the same location as yours.
This works for me:
tj0
Hmmm…you know, I think the original code I posted was incorrect as that path is no longer used in my code. I think the following might work better and remove the if statement.
After logging in and
/app/bin/the_app remote:Super-surprised that it didn’t work originally for you, seems like a bit of a weird footgun.
f0rest8
Yea, hm I wonder if it has something to do with it trying to build the release? Because it would always return the file path of
/app/_build/...whenever usingApplication.app_dir/2or:code.priv_dir/1.tj0
The docker file is using mix release by default and it works for me, so I don’t think it’s that. Anyway, definitely an odd one.
LostKobrakai
Make sure you run that code at runtime and not compile time.
f0rest8
Yea thanks! I did a quick test and deployed to Fly with this and it works:
Whereas before I was setting that as an attribute constant:
So, as I’m understanding, when building for the Fly release it compiles the attribute
@word_list_contentsand then returning the wrong file path of/app/_build/.... I didn’t realize that because when deploying to Render I think it was compiled locally and then sent up (because I never ran into this issue on Render)?