@@ -110,6 +110,24 @@ locals {
110
110
git_author_name = coalesce (data. coder_workspace_owner . me . full_name , data. coder_workspace_owner . me . name )
111
111
git_author_email = data. coder_workspace_owner . me . email
112
112
repo_url = data. coder_parameter . repo . value == " custom" ? data. coder_parameter . custom_repo_url . value : data. coder_parameter . repo . value
113
+ # The envbuilder provider requires a key-value map of environment variables.
114
+ envbuilder_env = {
115
+ " CODER_AGENT_TOKEN" : coder_agent.main.token,
116
+ # Use the docker gateway if the access URL is 127.0.0.1
117
+ " CODER_AGENT_URL" : replace (data. coder_workspace . me . access_url , " /localhost|127\\ .0\\ .0\\ .1/" , " host.docker.internal" ),
118
+ " ENVBUILDER_GIT_URL" : local.repo_url,
119
+ # Use the docker gateway if the access URL is 127.0.0.1
120
+ " ENVBUILDER_INIT_SCRIPT" : replace (coder_agent. main . init_script , " /localhost|127\\ .0\\ .0\\ .1/" , " host.docker.internal" ),
121
+ " ENVBUILDER_FALLBACK_IMAGE" : data.coder_parameter.fallback_image.value,
122
+ " ENVBUILDER_CACHE_REPO" : var.cache_repo,
123
+ " ENVBUILDER_DOCKER_CONFIG_BASE64" : try (data. local_sensitive_file . cache_repo_dockerconfigjson [0 ]. content_base64 , " " ),
124
+ " ENVBUILDER_PUSH_IMAGE" : var.cache_repo == " " ? " " : " true" ,
125
+ # "ENVBUILDER_INSECURE": "true", # Uncomment if testing with an insecure registry.
126
+ }
127
+ # Convert the above map to the format expected by the docker provider.
128
+ docker_env = [
129
+ for k , v in local . envbuilder_env : " ${ k } =${ v } "
130
+ ]
113
131
}
114
132
115
133
data "local_sensitive_file" "cache_repo_dockerconfigjson" {
@@ -155,6 +173,8 @@ resource "envbuilder_cached_image" "cached" {
155
173
builder_image = local. devcontainer_builder_image
156
174
git_url = local. repo_url
157
175
cache_repo = var. cache_repo
176
+ extra_env = local. envbuilder_env
177
+ # insecure = true # Uncomment if testing with an insecure registry.
158
178
}
159
179
160
180
resource "docker_container" "workspace" {
@@ -164,18 +184,10 @@ resource "docker_container" "workspace" {
164
184
name = " coder-${ data . coder_workspace_owner . me . name } -${ lower (data. coder_workspace . me . name )} "
165
185
# Hostname makes the shell more user friendly: coder@my-workspace:~$
166
186
hostname = data. coder_workspace . me . name
167
- # Use the docker gateway if the access URL is 127.0.0.1
168
- env = [
169
- " CODER_AGENT_TOKEN=${ coder_agent . main . token } " ,
170
- " CODER_AGENT_URL=${ replace (data. coder_workspace . me . access_url , " /localhost|127\\ .0\\ .0\\ .1/" , " host.docker.internal" )} " ,
171
- " ENVBUILDER_GIT_URL=${ local . repo_url } " ,
172
- " ENVBUILDER_INIT_SCRIPT=${ replace (coder_agent. main . init_script , " /localhost|127\\ .0\\ .0\\ .1/" , " host.docker.internal" )} " ,
173
- " ENVBUILDER_FALLBACK_IMAGE=${ data . coder_parameter . fallback_image . value } " ,
174
- " ENVBUILDER_CACHE_REPO=${ var . cache_repo } " ,
175
- " ENVBUILDER_DOCKER_CONFIG_BASE64=${ try (data. local_sensitive_file . cache_repo_dockerconfigjson [0 ]. content_base64 , " " )} " ,
176
- " ENVBUILDER_PUSH_IMAGE=${ var . cache_repo == " " ? " " : " true" } " ,
177
- # "ENVBUILDER_INSECURE=true", # Uncomment if testing with a registry running on `localhost`.
178
- ]
187
+ # Use the environment specified by the envbuilder provider, if available.
188
+ # FIXME: https://github.com/coder/terraform-provider-envbuilder/issues/31
189
+ # env = var.cache_repo == "" ? local.docker_env : envbuilder_cached_image.cached.0.env
190
+ env = local. docker_env
179
191
# network_mode = "host" # Uncomment if testing with a registry running on `localhost`.
180
192
host {
181
193
host = " host.docker.internal"
0 commit comments