如何在 Heroku 上 create/migrate Elixir Phoenix Docker 图像?

How to create/migrate Elixir Phoenix Docker image on Heroku?

我正在尝试弄清楚如何使用 Docker 在 Heroku 上 运行 Elixir Phoenix。我几乎在使用这个 Docker 文件:(https://github.com/jpiepkow/phoenix-docker/blob/master/Dockerfile)

# ---- Build Base Stage ----
FROM elixir:1.9.1-alpine AS app_builder
RUN apk add --no-cache=true \
    gcc \
    g++ \
    git \
    make \
    musl-dev
RUN mix do local.hex --force, local.rebar --force   

# ---- Build Deps Stage ----
FROM app_builder as deps
COPY mix.exs mix.lock ./
ARG MIX_ENV=prod
ENV MIX_ENV=$MIX_ENV
RUN mix do deps.get --only=$MIX_ENV, deps.compile

# ---- Build Release Stage ----
FROM deps as releaser
RUN echo $MIX_ENV
COPY config ./config
COPY lib ./lib
COPY priv ./priv
RUN mix release && \
    cat mix.exs | grep app: | sed -e 's/ app: ://' | tr ',' ' ' | sed 's/ //g' > app_name.txt

# ---- Final Image Stage ----
FROM alpine:3.9 as app
RUN apk add --no-cache bash libstdc++ openssl
ENV CMD=start
COPY --from=releaser ./_build .
COPY --from=releaser ./app_name.txt ./app_name.txt
CMD ["sh","-c","./prod/rel/$(cat ./app_name.txt)/bin/$(cat ./app_name.txt) $CMD"]

我已经推送到 Heroku,应用程序正在 运行ning,但是当我尝试使用数据库时,它就崩溃了。日志说数据库需要迁移,这是有道理的,因为我还没有做过。但是现在我意识到当 mix 不可用并且我正在使用 Docker.

时我不确定该怎么做

有谁知道在使用 Docker 部署时如何创建和迁移 postgres heroku?

创建https://hexdocs.pm/phoenix/releases.html#ecto-migrations-and-custom-commands

中提到的lib/my_app/release.ex

bash 到 Heroku 发布容器中(这与 Rails 应用程序的行为不同):

heroku run bash --app my_app

两个选项:

1

./prod/rel/my_app/bin/my_app start_iex

然后运行

MyApp.Release.migrate

2

./prod/rel/my_app/bin/my_app eval ""MyApp.Release.migrate"