Hello,
I am coming back to Elixir world after one year and I wanted to learn also new stuff so I decided to use Docker to my development.
I pulled pgadmin4 and postgresql, set it up according to documentation/articles. It looks like it works fine. I can log in into pgadmin4 through docker, I can open server with credentials given for postgresql container.
Elixir works fine if I want to play with localhost - I have also desktop version of PGAdmin4 and if I use credentials and localhost I can easily create ecto database.
Problem starts when I want to use locally developed Elixir/Phoenix app with PostgreSQL which is in container. I couldn’t find anything that could have helped me resolved this.
Container name: postgres_db,
Username: postgres,
Password: admin123,
Image: postgres
dev.exs
config :weather, Weather.Repo,
username: "postgres",
password: "postgres",
hostname: "postgres_db",
port: 5432,
database: "weather_dev",
stacktrace: true,
show_sensitive_data_on_connection_error: true,
pool_size: 10
Rest left unchanged from initially created files.
PS F:\weather> mix ecto.create
Compiling 28 files (.ex)
Generated weather app08:05:39.563 [error] Postgrex.Protocol (#PID<0.416.0>) failed to connect: ** (DBConnection.ConnectionError) tcp connect (postgres_db:5432): non-existing domain - :nxdomain
** (Mix) The database for Weather.Repo couldn’t be created: connection not available and request was dropped from queue after 2000ms. This means requests are coming in and your connection pool cannot serve them fast enough. You can address this by:
- Ensuring your database is available and that you can connect to it
- Tracking down slow queries and making sure they are running fast enough
- Increasing the pool_size (although this increases resource consumption)
- Allowing requests to wait longer by increasing :queue_target and :queue_interval
See DBConnection.start_link/2 for more information
Thats what i got when i try to create database.
I also tried to use IP address that I put while creating server in postgres, but it still times out.
My another try was also using docker-compose.yml
version: '3.8'
services:
postgres_db:
image: postgres
volumes:
- /var/lib/postgresql/data
container_name: weather
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: weather_dev
ports:
- 5432:5432
Accordingly I updated dev.exs to fit those variables and stopped container created meanually (to omit port conflicts). Effect remains the same. Its not possible to connect Elixir with dockerized Postgres and I cant create database for my app.
Thanks for any help