Open i-ky opened 2 months ago
Does ${localEnv:POSTGRES_HOSTNAME}
work?
Hi @chrmarti!
Thank you for looking into this.
I am not sure what "work" means if we are talking about the spec here. Do you have a specific implementation in mind?
https://containers.dev/implementors/json_reference/ seems to talk about pre-defined variables as a whole. Either
Environment and pre-defined variables may be referenced in the values.
...or nothing at all. So my expectation is that if containerEnv:
does not work, neither will localEnv:
.
containerEnv:
only works with container env variables and I don't see from your report if you set POSTGRES_HOSTNAME
in the container. I do see that you are using the local env variable POSTGRES_HOSTNAME
in the docker-compose.yml, so localEnv:
might work, depending on where you set POSTGRES_HOSTNAME
locally.
I don't see from your report if you set
POSTGRES_HOSTNAME
in the container. I do see that you are using the local env variablePOSTGRES_HOSTNAME
in the docker-compose.yml, solocalEnv:
might work, depending on where you setPOSTGRES_HOSTNAME
locally.
Sorry, I didn't mention it. POSTGRES_HOSTNAME
is set in .env
file (from there POSTGRES_HOSTNAME
gets into Compose file) and .env
file is also passed to the dev container in Compose file as env_file:
(this is how POSTGRES_HOSTNAME
gets into container environment).
Since POSTGRES_HOSTNAME
is not set in host environment, I think that localEnv:
will not work. Do you want me to try?
Please help me with this issue and report back on things that are not working properly in my dev containers for the account I have been using for the last two months I need to get a new one I don’t know what to do with this issue but please advise
Brecht Vrolix
On Tue, 17 Sep 2024 at 11:20, i-ky @.***> wrote:
I don't see from your report if you set POSTGRES_HOSTNAME in the container. I do see that you are using the local env variable POSTGRES_HOSTNAME in the docker-compose.yml, so localEnv: might work, depending on where you set POSTGRES_HOSTNAME locally.
Sorry, I didn't mention it. POSTGRES_HOSTNAME is set in .env file (from there POSTGRES_HOSTNAME gets into Compose file) and .env file is also passed to the dev container in Compose file as env_file: (this is how POSTGRES_HOSTNAME gets into container environment).
Since POSTGRES_HOSTNAME is not set in host environment, I think that localEnv: will not work. Do you want me to try?
— Reply to this email directly, view it on GitHub https://github.com/devcontainers/spec/issues/489#issuecomment-2354999102, or unsubscribe https://github.com/notifications/unsubscribe-auth/AS6S7WNXVZ4JHNQUURD6FU3ZW7X5NAVCNFSM6AAAAABMQRHLYCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGNJUHE4TSMJQGI . You are receiving this because you are subscribed to this thread.Message ID: @.***>
Since
POSTGRES_HOSTNAME
is not set in host environment, I think thatlocalEnv:
will not work. Do you want me to try?
You're right. Support for env files has come up before. Related: https://github.com/microsoft/vscode-remote-release/issues/3007
Since
POSTGRES_HOSTNAME
is not set in host environment, I think thatlocalEnv:
will not work. Do you want me to try?You're right. Support for env files has come up before. Related: microsoft/vscode-remote-release#3007
Are you implying that if POSTGRES_HOSTNAME
was set in host environment then localEnv:
would work in forwardPorts
?
To avoid hardcoding hostnames I am using environment variables, e.g.
${POSTGRES_HOSTNAME}
. This allows pointing application or any supplementary scripts to the correct host depending on the environment (e.g. in and out of dev container). Same variables are used ashostname:
in Docker Compose files:And same variables should be used in
forwardPorts
andportsAttributes
of dev container configuration:Unfortunately,
forwardPorts
andportsAttributes
don't support variables, so it needs to be hardcoded instead:...meaning that hostname needs to be changed manually in two more places if the environment variable changes.