如何通过容器使用PostgeSQL来启动Phoenix?

我试过了:

$ alias psql="docker exec -ti pg-hello-phoenix sh -c 'exec psql -h localhost -p 5432 -U postgres'" $ mix ecto.create 

但得到:

**(RuntimeError)在path中找不到可执行的psql ,请确保它在运行ecto命令之前是可用的lib / ecto / adapters / postgres.ex:106:Ecto.Adapters.Postgres.run_with_psql / 2 lib / ecto / adapters / postgres .ex:83:Ecto.Adapters.Postgres.storage_up / 1 lib / mix / tasks / ecto.create.ex:34:匿名fn / 2在Mix.Tasks.Ecto.Create.run/1(elixir)lib / enum .ex:604:Enum。“ – each / 2-lists ^ foreach / 1-0 – ”/ 2(elixir)lib / enum.ex:604:Enum.each / 2(mix)lib / mix / cli.ex :58:Mix.CLI.run_task / 2(elixir)lib / code.ex:363:Code.require_file / 2

另外我试图创build符号链接/usr/local/bin/psql

 #!/usr/bin/env bash docker exec -ti pg-hello-phoenix sh -c "exec psql -h localhost -p 5432 -U postgres $@" 

接着:

 $ sudo chmod +x /usr/local/bin/psql 

检查:

 $ which psql /usr/local/bin/psql $ psql --version psql (PostgreSQL) 9.5.1 

再次运行:

 $ mix ecto.create ** (Mix) The database for HelloPhoenix.Repo couldn't be created, reason given: cannot enable tty mode on non tty input . 

PostgreSQL容器启动:

 $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 013464d7227e postgres "/docker-entrypoint.s" 47 minutes ago Up 47 minutes 5432/tcp pg-hello-phoenix 

对我来说,我做了以下几点:

 sudo docker exec -it postgres-db bash 

我拿到了交互式shell

 psql -h localhost -p 5432 -U postgres 

然后我手动创build我的数据库:

 CREATE DATABASE cars_dev; 

最后:

 mix ecto.migrate 

之后一切正常工作:)希望它可以帮助。

我可以通过进入/config/.exs来做到这一点在我的情况是开发,所以/config/dev.exs和主机名作为本地主机,但增加了另一个端口设置:32768,因为这是docker暴露的端口。

确保在端口和数字(不是string)之间留出空格。 否则,它将无法正常工作。

之后像往常一样工作。 自然的假设是用户名/密码也在容器上匹配。