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。