I want to set config_env from .env file. I am trying to use config env variable from Dockerfile but i get wrong value. I have set MIX_ENV=prod in .env but i get :dev on config_env() other thing i also try System.get_env("MIX_ENV") where i get correct value.
Since you’ve mentioned Dockerfile, I suppose you’re using a release. In that case, config_env/0 returns environment which was active at the moment when mix release run.
Suffer no more.
Here is how I would write the env variable in the docker compose file:
docker-compose.yml
------------------------------------------------------------------------------------------------------
xx some stuff goes here for the images and commands( the usual stuffs)
xx
xx
services:
web:
env_file:
- .env
build:
context: "."
args:
- MIX_ENV=$MIX_ENV
ports:
- 4000:4000
environment:
MIX_ENV="what_ever_string_your_app_expect"
ANOTHER_ENV_VAR="what_ever_string_your_app_expect"
ANOTHER_ONE="DJKHALED"
FOR_EXAMPLE_USERNAME="kigila"
I have been doing it this way since I learn docker compose.
I’m not at a computer so I can’t test this and therefore I might be wrong, but it looks to me like you’re defining your MIX_ENV twice, once from your .env file and then by setting args in your compose file.
You only need the .env file (assuming it’s using key=value pairs and the file is in the right place).