Is it possible to start locally a few Phoenix apps on different ports from the console using some command like mix phoenix.server --port=4001
? This one does not work, of course, but, maybe, there is similar way.
Asked
Active
Viewed 1.0k times
31

kovpack
- 4,905
- 8
- 38
- 55
3 Answers
46
Yep! Make sure you set the mix config to reference the env port, i.e.
config :my_app, MyApp.Endpoint,
http: [port: {:system, "PORT"}],
Then from the terminal:
$ PORT=4001 mix phoenix.server
$ PORT=4002 mix phoenix.server
$ PORT=4003 mix phoenix.server

Chris McCord
- 8,020
- 1
- 37
- 26
-
Thanx! This is what I need – kovpack May 30 '15 at 09:28
-
9Note: Doing this in `config.exs` does not work, the reason I guess is the `dev.exs` overrides the config. Hence put this in `dev.exs`. For more info see this issue on phoenix https://github.com/phoenixframework/phoenix/issues/962 – tejasbubane Nov 09 '15 at 19:33
-
Note 2: You shouldn't add the lines to your config files but edit the existing lines. I got a cryptic error by just adding the lines for my app. – Hartator Jun 07 '17 at 22:31
40
Edit your config/dev.exs
and change the Endpoint http port like the following:
config :my_app, MyApp.Endpoint,
http: [port: System.get_env("PORT") || 4000],
This allows the port to be set, or left as the default 4000
:
PORT=4002 mix phoenix.server # to run on port 4002
mix phoenix.server # to run on port 4000
This answer was described by @chris-mccord on github.

steakunderscore
- 1,076
- 9
- 18
-
This worked. The command to start Phoenix is now `mix phx.server` – kgpdeveloper Nov 23 '18 at 12:50
2
This was needed for me as a solution since my issue was that I needed to let C9.io dictate the port, for me, adding this code to the dev.exs
file solved the problem:
config :my_app, MyApp.Endpoint,
http: [port: {:system, "PORT"}],
and then in the Terminal, I just needed to run the server as normal:
mix phoenix.server

Jason Rueckert
- 661
- 2
- 6
- 14