Vovchikan

Vovchikan

I’ve added ecto to my Elixir app. On host it’s running fine, because ecto can connect to local db. But I don’t understand, what i need to do, if this app running in docker container.

I’m getting this error:
11:42:31.536 [error] Postgrex.Protocol (#PID<0.249.0>) failed to connect: ** (DBConnection.ConnectionError) tcp connect (localhost:5432): connection refused - :econnrefused

And I understand, that docker container with my app doesn’t have postgresql at localhost inside. But i don’t understand, how configure this.

P.S. I’m trying to learn Docker, Elixir, Ecto, Postgresql.

My app on github, branch - main, not master.

Showing Posts 1 to 9

LostKobrakai

LostKobrakai

Instead of localhost connect to whatever the hostname of postgres is in your docker setup. What that is depends on your general setup – postgres within docker or postgres on the host running docker – as well as potentially the specific name you gave things.

Vovchikan

Vovchikan OP

My postgres runs at host machine, not in container. Where i can find hostname of postgres?

Vovchikan

Vovchikan OP

That works!

config :echo, Echo.Repo,
  database: "echo_db",
  username: "postgres",
  password: "postgres",
  hostname: "host.docker.internal"

Thank you, but now i can’t start my app localy on machine. How can i split configuration of ecto for docker, and for local using?

rjk

rjk

Maybe you could do stuff like this in your dev.exs

get_db_host = fn -> 
  if File.exists?("/.dockerenv") do
    "host.docker.internal"
  else
    "pg host outside docker"
  end
end

config :echo, Echo.Repo
    ...
    hostname: get_db_host.()

But it’s also possible to read it from the environment by using;

config :echo, Echo.Repo
   ...
   database: System.get_env("PGHOST", "host.docker.internal")

then outside of the docker you have to set PGHOST before starting things up.

Vovchikan

Vovchikan OP

I’ve find another way of solving this problem.

Uncommented this line from config/config.exs

import_config "#{config_env()}.exs"

Added docker.exs with

import Config


config :echo, Echo.Repo,
  database: "echo_db",
  username: "postgres",
  password: "postgres",
  hostname: "host.docker.internal"

Added to up of Dockerfile

ENV MIX_ENV docker
Vovchikan

Vovchikan OP

Yeah, i have read this before, but don’t understand how use this. Now i know

rjk

rjk

Yeah this is even another way of doing it and maybe the cleanest way.

Great you found a good solution! Happy elixiring! :slight_smile:

— All posts loaded —

Where Next? Top

Trending in Questions Top

RSP87
I’m working on a project that simulates the bumbl example in the programming phoenix book. It acts almost like an email client. We have a...
New
kpanic
Hi everyone, I am toying with the idea of building a “match maker” for giving personal help to people that wants to start coding. I sta...
New
nseaSeb
Hello, I know there is an approach for handling lists that allows for optimized traversal, but I can’t recall the specific method (somet...
New
brecabral
Documentation While reading the Scoped Routes section, I noticed that the documentation currently refers to a problem without explainin...
New
velrest
So my question is quite simple and i have found no conclusive answer on forum, google or AI. Should we use :erlang.float for Integer to ...
New
asweet-confluent
I recently noticed that Elixir’s Logger defaults its primary log level to :debug when no :logger, :level application configuration is pre...
New
ryanwinchester
apply_graft/2 doesn’t rewrite an add_many sub-workflow’s deps on an add step. Grafted jobs cancel with “upstream job was deleted” Version...
New

Other Trending Topics Top

JesseHerrick
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
marciok
Hi there! We created Gust: A task orchestrator inspired by Airflow. For those who have never heard about Aiflow, it’s a Python-based wor...
New
mhanberg
Hi everyone! The first release candidate for the Expert language server project is now available! We’ve published a press release detai...
New
jimsynz
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
Dmk
Xamal is a deployment tool for Elixir apps that deploys native releases to bare metal servers over SSH. It’s a port of GitHub - basecamp/...
New
webofbits
With AI doing more of the implementation work, I’ve been wondering how much coding I should deliberately keep doing myself. My main conc...
#ai
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews