PHX Releases build failed with non-existing domain

Hello Devs,
Using this tutorial Deploying with Releases — Phoenix v1.5.9 _build/prod/rel/my_app/bin/my_app start failed with

11:50:50.507 [info] Access BgsiteOfficialWeb.Endpoint at http://example.com
11:50:50.507 [error] Postgrex.Protocol (#PID<0.3536.0>) failed to connect: ** (DBConnection.ConnectionError) tcp connect (HOST:5432): non-existing domain - :nxdomain

I tried to change the domain with my own and also localhost but nothing worked (in config/prod.exs).

Any thoughts?

Can you please show the content of config/prod.exs? What is the value of the DATABASE_URL environment variable?

#config/prod.exs

use Mix.Config

# For production, don't forget to configure the url host
# to something meaningful, Phoenix uses this information
# when generating URLs.
#
# Note we also include the path to a cache manifest
# containing the digested version of static files. This
# manifest is generated by the `mix phx.digest` task,
# which you should run after static files are built and
# before starting your production server.
config :bgsite_official, BgsiteOfficialWeb.Endpoint,
  url: [host: "example.com", port: 80],
  cache_static_manifest: "priv/static/cache_manifest.json"

# Do not print debug messages in production
config :logger, level: :info

# ## SSL Support
#
# To get SSL working, you will need to add the `https` key
# to the previous section and set your `:url` port to 443:
#
#     config :bgsite_official, BgsiteOfficialWeb.Endpoint,
#       ...
#       url: [host: "example.com", port: 443],
#       https: [
#         port: 443,
#         cipher_suite: :strong,
#         keyfile: System.get_env("SOME_APP_SSL_KEY_PATH"),
#         certfile: System.get_env("SOME_APP_SSL_CERT_PATH"),
#         transport_options: [socket_opts: [:inet6]]
#       ]
#
# The `cipher_suite` is set to `:strong` to support only the
# latest and more secure SSL ciphers. This means old browsers
# and clients may not be supported. You can set it to
# `:compatible` for wider support.
#
# `:keyfile` and `:certfile` expect an absolute path to the key
# and cert in disk or a relative path inside priv, for example
# "priv/ssl/server.key". For all supported SSL configuration
# options, see https://hexdocs.pm/plug/Plug.SSL.html#configure/1
#
# We also recommend setting `force_ssl` in your endpoint, ensuring
# no data is ever sent via http, always redirecting to https:
#
#     config :bgsite_official, BgsiteOfficialWeb.Endpoint,
#       force_ssl: [hsts: true]
#
# Check `Plug.SSL` for all available options in `force_ssl`.

# Finally import the config/prod.secret.exs which loads secrets
# and configuration from environment variables.
import_config "releases.exs"
export DATABASE_URL=ecto://USER:PASS@HOST/database

This is an example value. You need to replace it with a proper one. For locally running PostgreSQL this would be something like postgresql://postgres:postgres@localhost:5432/my_app_dev.

5 Likes

I’m having the same issue as the original poster, but the example values are changed to those for my machine and database. So far I’ve been able to setup and log into the psql database remotely, albeit on the same machine but with the ip instead of with “localhost” from the terminal. I found that I don’t have a “domain” set up in the database. Do I need that to connect a release build of my app to the database? Also, I’m trying to just keep using the _dev database for now. Would that cause issues?

Possibly the psql daemon is configured to only listen on the external IP?

Ok, not sure how to change it but it’s something to look into. Thank you for the advice soup.

Ended up just changing the ip to localhost, which works for what I need.