Elixir和Docker

我有一个新鲜的凤凰应用程序,我正在尝试Dockerize它。

我遇到了以下问题:如果我在本地启动Phoenix( mix phx.server ),它工作正常(连接到本地MIX_ENV=prod mix phx.server )如果我运行它在PROD( MIX_ENV=prod mix phx.server )连接到RDS

如果我运行在Docker / dev模式下( docker-compose up ),我得到这个连接错误 在这里输入图像说明

如果我在Docker / prod模式下运行,我得到相同的错误

我认为Docker不能在本地连接是由于一些networking问题(本地主机vs docker主机),但它仍然在prod中运行时查找本地主机。

尝试:

 `docker-compose -f docker-compose.yml -f docker-compose.prod.yml up` `MIX_ENV=prod docker-compose -f docker-compose.yml -f docker-compose.prod.yml up` 

我已经试过了凤凰卫视1.3和最新的遥不可及的遥控器。

Elixir确实要求在正常的prod.secret.exs数据库configuration之上的DATABASE_URL

我甚至试图把一个PG容器放入组合设置并链接它。 Elixir仍然要求本地主机。

没有DATABASE_URL在我的环境。

我已经尝试伞应用所有的方式香草凤凰。 没有爱。

我导出了PORT(就像Elixir想要的那样)

你必须告诉Pheonix访问你的数据库的主机。 这不是容器内的localhost Postgres运行在不同的容器中。 从你的屏幕截图看起来像你命名你的db容器postgres ,这意味着你可以从你的凤凰容器内的http://postgres打你的数据库。 更新你的本地连接的详细信息以使用postgres或者在docker-compose.yml文件中设置DATABASE_URL=postgres作为环境variables。