Home Posts Tags Post Search Tag Search

Post 22

Game Site Journal - 13 Fly.io Deployment issues

Published on: 2025-04-28 Tags: elixir, Blog, Side Project, LiveView, Game Site, Fly, Deployment
So let me start off by saying that it was simple an issue where some of my files were opened from windows or a scanner changed the format from LF to CRLF... I was running into issues with the deploy not working. I'll explain the solution rq so that it's at the top.

I was able to find the issues by systematically going through older commits till I found one that worked. Once I had a working one I did:
git diff <working branch id> from the master branch.

This gave me a list of changes and as I was scrolling down I was able to see a bunch of lines that ended with ^M which is a WINDOWS format and Fly.io needs Linux... While I was in my VSCode editor I was simply able to click on the CRLF and swap the format to the LF.

Now let's go over some of the things that I did to figure out that it wasn't the migration or some many other things.

So first and foremost I wanted to be sure that the user on the local computer had the proper permissions:
ls -l rel/overlays/bin
-rwxr-xr-x 1 vinny vinny 99 Apr 28 10:58 migrate
-rwxr-xr-x 1 vinny vinny 52 Apr 28 10:27 migrate.bat
-rwxr-xr-x 1 vinny vinny 91 Apr 28 10:27 server
-rwxr-xr-x 1 vinny vinny 49 Apr 28 10:27 server.bat

This shows that:
 user vinny has read(r) write(w) execute(x) 
group permissions has r x permissions 
and others have rx permissions

So we know that local permissions were not the issue

Next I wanted to ssh into the remote server and see what kind of issues there was, it was saying that:
2025-04-28T17:51:17.367 app[4d89664a452578] sjc [info] ERROR Error: failed to spawn command: /app/bin/migrate: No such file or directory (os error 2)

Which made me feel that I was having issues with it not even being on the server
fly ssh console # To ssh to the server with a console
ls -l /app/bin/migrate
# This showed
-rwxr-xr-x 1 nobody root 96 Apr 24 02:32 /app/bin/migrate

Which is what we wanted...

Next I tried to manually run the script from the server
/app/bin/migrate
18:52:19.672 [info] Migrations already up

Which is what we wanted...

Next I tried to run it as nobody
runuser -u nobody -- /app/bin/migrate
19:04:36.875 [info] Migrations already up

Which is what we wanted...

The last thing that I tried was to manually swap the USER to root and insert the release_command = 'runuser -u nobody -- /app/bin/migrate' into the fly.toml

That didn't work either... This was about the time that I just tried to use github source control and found the ^M that I was worried about.