pramsky

pramsky

Debugging Phoenix applications in Docker

Hello!

I have a simple phoenix application that I have created a Docker container for. When I start the container, the phoenix app dies with the following message.

app-app-1  | 16:26:07.645 [info] Starting the cache supervisor.
app-app-1  | 16:26:07.646 [info] Loading data from country.csv
app-app-1  | 16:26:07.650 [info] Loading data from nadp.csv
app-app-1  | 16:26:07.668 [info] Application cnamsvc exited: shutdown
app-app-1  | {"Kernel pid terminated",application_controller,"{application_terminated,cnamsvc,shutdown}"}
app-app-1  | Kernel pid terminated (application_controller) ({application_terminated,cnamsvc,shutdown})
app-app-1  |
app-app-1  | Crash dump is being written to: erl_crash.dump...done

I don’t get any additional messages other than the erl_crash.dump which is around 100k lines :\

To troubleshoot this, I did a mix phx.release on a debian bullseye server with the same versions of erlang and elixir as on the docker builder image. After setting the env variables for runtime.,exs, the application starts and runs without any issues.

However when I enter the container and setting the env variables for runtime.exs and try to start the application, I get the same error as before.

nobody@340122f25639:/app$ ./bin/cnamsvc start_iex
Erlang/OTP 24 [erts-12.0.1] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1] [jit]

16:36:00.827 [info] Starting the cache supervisor.
16:36:00.829 [info] Loading data from country.csv
16:36:00.833 [info] Loading data from nadp.csv
16:36:00.853 [info] Application cnamsvc exited: shutdown
{"Kernel pid terminated",application_controller,"{application_terminated,cnamsvc,shutdown}"}
Kernel pid terminated (application_controller) ({application_terminated,cnamsvc,shutdown})

How can I determine what caused the application to fail ? Outside of the erl_crash.dump there are no logs being generated and nothing output to stdout.

First Post!

arcanemachine

arcanemachine

I see that you’re starting the app with a manual command. Have you tried the using the built-in Dockerfile generator via mix phx.gen.release --docker?

I’ve had to make a few modifications to get my projects to work (mostly due to npm dependencies), but it’s worked pretty well for me.

Last Post!

pramsky

pramsky

Thanks for your reply. I finally figured out that I was not copying the runtime.exs into the container during the build process. Now the app does not crash on startup. I do not however see it listening on the specified port (even though the startup message says it should be) and am troubleshooting that :slight_smile:

Where Next?

Popular in Questions Top

nobody
Hi! In PHP: $_SERVER[‘SERVER_ADDR’] - in Elixir? Searched the docs for ip address and the web, no good results. Thanks!
New
RisingFromAshes
I’ve read in another post that it may be possible with a router helper - but I couldn’t find an appropriate one, and tbh, I’m still just ...
New
vonH
In asking this question I am more interested about the expressiveness of the language itself and less concerned about the availability of...
New
Emily
I have VueJS GUIs with the project generated using Webpack. I have Elixir modules that will need to be used by the VueJS GUIs. I forese...
New
dokuzbir
I want to highlight html closing tags when i click a html tag. That works in .html files but doesnt work for html.eex templates. How can...
New
pmjoe
I have a relationship of love and hate with Elixir. Lots of things are just absolutely right, but there are some things that are kind of ...
New
romenigld
I am trying to run a deploy with docker and I successfully runned with this command: docker build -t romenigld/blog-prod . but when I t...
New

Other popular topics Top

jononomo
I am trying to figure out how Mix knows whether the environment is test, dev, or prod – where is this set? Thanks.
New
Qqwy
Original source of discussion: This topic on the Pragmatic Programmers’ Functional Web Development with Elixir, OTP, and Phoenix forum. ...
New
vonH
In asking this question I am more interested about the expressiveness of the language itself and less concerned about the availability of...
New
lanycrost
Hi everyone! I need implement if…else if…else condition from my elixir code, and anymore of this control flow structures not work proper...
New
bsollish-terakeet
Credo is smart enough to check for (something like) this: assert length(the_list) == 0 with this response: Checking if an enum is empt...
New
SoCreat
i’m a new one to elixir which editor can i use vs code? or atom? Thanks! :smiley:
New

We're in Beta

About us Mission Statement