31
votes

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.

3

3 Answers

46
votes

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
40
votes

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.

2
votes

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