我有一个适用于heroku的凤凰应用程序。我们想把它移到DO。我们将使用docker。
我尝试在本地机器上使用docker-compose建立docker镜像。如果我用<?xml
做到这一切都很好。如果我将MIX_ENV=dev
设置为MIX_ENV
,我就会遇到问题。
prod
prod.secret.exs仅包含DB
的凭据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
当我运行# 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
它什么都不返回......
如果我在浏览器中转到192.168.99.100:4000,那么它会将我重定向到 https://myapp.herokuapp.com
docker会保存我以前的配置吗?我试图删除我更新Dockerfile时构建的所有实验图像。它没有帮助:(
发生了什么事?有什么建议吗?
P.S。 我的Dockerfile
$ curl $(docker-machine ip default):4000
我的docker-compose.yml
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"]
答案 0 :(得分:1)
嗯,你试过mix clean
吗?
答案 1 :(得分:0)
确定。谢谢@ aaron-tinio的回答。这部分解决了我的问题。第二部分是ENV变量......
我的ENV中不存在System.get_env(“SECRET_KEY_BASE”),这可能会阻止Phoenix ENV的更改(我不确定)。但我没有看到任何通知/例外/警告:(
为了解决这个问题,我在本地控制台使用 $("#addbtn").click(function(){
var cityName=document.getElementById("cityField").value.toString();
var countryName=document.getElementById("countryField").value;
var description=document.getElementById("descriptionField").value;
var touristTargets=document.getElementById("targetsField").value;
var costPerDay=parseInt(document.getElementById("costField").value);
$.ajax({
dataType: "json",
type: "GET",
url: "getCities.php",
data: {limit:100,action:"add",cityField:cityField,countryField:countryField,descriptionField:descriptionField,targetsField:targetsField,costField:costPerDay},
success: {function(msg) {
alert(msg.status);
}}
});
(没有docker)。在这种情况下,我看到了错误(感谢我的朋友 - @alg)。