feat: execute service as distributed erlang (#96)
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
To create a cluster with distributed nodes, the following changes were made: * Use [`dns_cluster`][0] to execute distributed nodes * Add _script_ to execute distributed nodes locally Also, improve local execution by: * Use [`mix release`][1] to make easier [deploy `phoenix`][2] * Use [`compose watch`][3] to synchronize code from the host with the service Some minor improvements: * Ignore files and folders in git and docker * Remove boilerplate comments [0]: https://github.com/phoenixframework/dns_cluster [1]: https://hexdocs.pm/mix/Mix.Tasks.Release.html [2]: https://hexdocs.pm/phoenix/releases.html [3]: https://docs.docker.com/compose/how-tos/file-watch/ Co-authored-by: Joao P Dubas <joao.dubas@gmail.com> Reviewed-on: #96 Co-authored-by: Joao P Dubas <joao.dubas+gitea@gmail.com> Co-committed-by: Joao P Dubas <joao.dubas+gitea@gmail.com>
This commit is contained in:
@@ -1,34 +1,25 @@
|
||||
defmodule Wabanex.Application do
|
||||
# See https://hexdocs.pm/elixir/Application.html
|
||||
# for more information on OTP Applications
|
||||
@moduledoc false
|
||||
|
||||
use Application
|
||||
|
||||
def start(_type, _args) do
|
||||
children = [
|
||||
# Start the PromEx supervisor
|
||||
Wabanex.PromEx,
|
||||
# Start the Ecto repository
|
||||
Wabanex.Repo,
|
||||
# Start the Telemetry supervisor
|
||||
WabanexWeb.Telemetry,
|
||||
# Start the PubSub system
|
||||
{Phoenix.PubSub, name: Wabanex.PubSub},
|
||||
# Start the Endpoint (http/https)
|
||||
{DNSCluster,
|
||||
query: Application.get_env(:wabanex, :dns_cluster_query) || :ignore,
|
||||
log: :info,
|
||||
resolver: Application.get_env(:wabanex, :dns_cluster_resolver) || DNSCluster.Resolver},
|
||||
WabanexWeb.Endpoint
|
||||
# Start a worker by calling: Wabanex.Worker.start_link(arg)
|
||||
# {Wabanex.Worker, arg}
|
||||
]
|
||||
|
||||
# See https://hexdocs.pm/elixir/Supervisor.html
|
||||
# for other strategies and supported options
|
||||
opts = [strategy: :one_for_one, name: Wabanex.Supervisor]
|
||||
Supervisor.start_link(children, opts)
|
||||
end
|
||||
|
||||
# Tell Phoenix to update the endpoint configuration
|
||||
# whenever the application is updated.
|
||||
def config_change(changed, _new, removed) do
|
||||
WabanexWeb.Endpoint.config_change(changed, removed)
|
||||
:ok
|
||||
|
Reference in New Issue
Block a user