如何通过容器使用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)之间留出空格。 否则,它将无法正常工作。
之后像往常一样工作。 自然的假设是用户名/密码也在容器上匹配。