diff --git a/client/taskenv/env.go b/client/taskenv/env.go index 67a875c4a..b9be3ba1d 100644 --- a/client/taskenv/env.go +++ b/client/taskenv/env.go @@ -786,6 +786,14 @@ func buildUpstreamsEnv(envMap map[string]string, upstreams []structs.ConsulUpstr } } +func WithPortMapEnvs(envs map[string]string, ports map[string]int) map[string]string { + for portLabel, port := range ports { + portEnv := PortPrefix + portLabel + envs[portEnv] = strconv.Itoa(port) + } + return envs +} + // SetHostEnvvars adds the host environment variables to the tasks. The filter // parameter can be use to filter host environment from entering the tasks. func (b *Builder) SetHostEnvvars(filter []string) *Builder { diff --git a/drivers/docker/driver.go b/drivers/docker/driver.go index 20b27626b..21f842869 100644 --- a/drivers/docker/driver.go +++ b/drivers/docker/driver.go @@ -967,6 +967,7 @@ func (d *Driver) createContainerConfig(task *drivers.TaskConfig, driverConfig *T logger.Debug("applied labels on the container", "labels", config.Labels) } + task.Env = taskenv.WithPortMapEnvs(task.Env, driverConfig.PortMap) config.Env = task.EnvList() containerName := fmt.Sprintf("%s-%s", strings.Replace(task.Name, "/", "_", -1), task.AllocID)