凤凰生产configuration重装问题

我有一个在heroku上工作的凤凰应用程序。 我们想把它移到DO。 我们将使用docker。 我尝试使用docker-compose在本地机器上启动Docker镜像。 如果我用MIX_ENV=dev来做,一切都很好。 如果我设置MIX_ENV prod我有一个问题。

上一个prod.exs:

 use Mix.Config config :myapp, Myapp.Endpoint, http: [port: {:system, "PORT"}], url: [scheme: "https", host: "myapp.herokuapp.com", port: 443], force_ssl: [rewrite_on: [:x_forwarded_proto]], cache_static_manifest: "priv/static/manifest.json", secret_key_base: System.get_env("SECRET_KEY_BASE") config :logger, level: System.get_env("LOG_LEVEL") || :info config :myapp, Myapp.Repo, adapter: Ecto.Adapters.Postgres, url: System.get_env("DATABASE_URL"), pool_size: 20, ssl: true 

prod.secret.exs仅包含DB的凭据

现在:

prod.exs

 # I changed only endpoint: config :myapp, Myapp.Endpoint, http: [port: {:system, "PORT"}], ssl: false, # I replaced previous 3 lines with this... secret_key_base: System.get_env("SECRET_KEY_BASE") 

问题

当我运行docker-compose up --build它的工作原理和返回:

 web_1 | 20:29:07.073 [info] Running Myapp.Endpoint with Cowboy using http://localhost:4000 

但! 当我这样做: $ curl $(docker-machine ip default):4000它不会返回任何…

如果我在浏览器中转到192.168.99.100:4000那么它将我redirect到 https://myapp.herokuapp.com

docker工保存我以前的configuration吗? 我试图删除更新Dockerfile时生成的所有实验图像。 它没有帮助:(

这是怎么回事? 有什么build议么?

PS我的Dockerfile

 FROM trenpixster/elixir:1.2.5 COPY . /app WORKDIR /app RUN mix local.hex --force RUN mix local.rebar --force RUN mix do deps.get RUN touch config/prod.exs ENV PORT 4000 ENV MIX_ENV prod RUN mix compile EXPOSE 8080 EXPOSE 8443 ENTRYPOINT ["mix", "phoenix.server"] 

我的docker-compose.yml

 version: '2' services: web: build: . ports: - "4000:4000" volumes: - .:/app depends_on: - db db: image: postgres:9.4.8 

嗯,你试过mix clean吗?

好。 谢谢@ aaron-tinio的回答。 这部分解决了我的问题。 第二部分是ENVvariables…我的ENV中不存在System.get_env(“SECRET_KEY_BASE”),这可能会阻止Phoenix ENV的更改(我不太确定)。 但是我没有看到任何通知/exception/警告:(为了解决这个问题,我使用MIX_ENV=prod mix phoenix.server从我的本地控制台(没有docker)。在这种情况下,我看到错误(谢谢我的朋友 – @alg)。