如何使用elixir phoenix版本和指南中的示例MyApp.Release.rollback回退docker容器中的数据库

问题描述 投票:1回答:2

当尝试通过在Docker容器中运行的phoenix应用来尝试回滚数据库时,我无法弄清楚如何回滚数据库。我正在尝试在本地模拟在远程服务器上进行迁移时的状态。

我正在通过运行在本地运行:

docker run -it -p 4000:4000 -e DATABASE_URL=ecto://postgres:[email protected]/my_app_dev -e SECRET_KEY_BASE=blahblah my-app-tag:v1

我通过以下方式查看正在运行的容器:

docker ps

我扑向容器里

docker exec -it 8943918c8f4f /bin/bash

cd插入app/bin

cd bin

尝试回滚

./my_app rpc 'MyApp.Release.rollback(MyApp.Repo, "20191106071140")'

=> 08:43:45.516 [info]  Already down

如果在应用程序中运行时确实可以正常工作,那么当我做其他事情时,它应该会崩溃。但事实并非如此。

如果我尝试评估

./my_app eval 'MyApp.Release.rollback(MyApp.Repo, "20191106071140")'

=>

08:46:22.033 [error] GenServer #PID<0.207.0> terminating
** (RuntimeError) connect raised KeyError exception: key :database not found. The exception details are hidden, as they may contain sensitive data such as database credentials. You may set :show_sensitive_data_on_connection_error to true when starting your connection if you wish to see all of the details
    (elixir) lib/keyword.ex:393: Keyword.fetch!/2
    (postgrex) lib/postgrex/protocol.ex:92: Postgrex.Protocol.connect/1
    (db_connection) lib/db_connection/connection.ex:69: DBConnection.Connection.connect/2
    (connection) lib/connection.ex:622: Connection.enter_connect/5
    (stdlib) proc_lib.erl:249: :proc_lib.init_p_do_apply/3
Last message: nil
** (EXIT from #PID<0.163.0>) shutdown

[我试图确保我知道如何将应用程序部署到远程(Heroku,AWS),并在每次部署时使应用程序自动迁移,但还可以选择运行命令以一次回滚1个步骤。] >

我没有找到任何信息。上面的调试是在远程服务器上创建此迁移/回滚功能的第一步,但首先要在本地计算机上进行测试。

迁移/回滚代码直接来自https://hexdocs.pm/phoenix/releases.html#ecto-migrations-and-custom-commands

任何帮助/指导将不胜感激。

谢谢

当尝试通过在Docker容器中运行的phoenix应用来尝试回滚数据库时,我无法弄清楚如何回滚数据库。我试图在本地模拟在...

docker elixir phoenix-framework database-migration ecto
2个回答
2
投票

首先,rpc调用应该成功。运行my_app rpc之前,请确保您确实在问题up


0
投票

这里有两个问题,感谢@ aleksei-matiushkin,我的工作正常。

© www.soinside.com 2019 - 2024. All rights reserved.