func getDockerConfigs()

in args.go [86:122]


func getDockerConfigs() (*logger.DockerConfigs, error) {
	containerLabelsString := viper.GetString(ContainerLabelsKey)
	containerLabels := make(map[string]string)
	if containerLabelsString != "" {
		err := json.Unmarshal([]byte(containerLabelsString), &containerLabels)
		if err != nil {
			return nil, err
		}
	}

	containerEnvString := viper.GetString(ContainerEnvKey)
	containerEnv := make([]string, 0)
	if containerEnvString != "" {
		containerEnvMap := make(map[string]string)
		err := json.Unmarshal([]byte(containerEnvString), &containerEnvMap)
		if err != nil {
			return nil, err
		}
		// Docker logging use a slice to store the environment variables
		// Each item is in the format of "key=value"
		// ref: https://github.com/moby/moby/blob/c833222d54c00d64a0fc44c561a5973ecd414053/daemon/logger/loginfo.go#L60
		for envKey, envVal := range containerEnvMap {
			containerEnv = append(containerEnv, envKey+"="+envVal)
		}
	}

	// Docker config variables are optional
	// If no docker config variables are passed to shim logger, we will use empty values for them.
	args := &logger.DockerConfigs{
		ContainerImageID:   viper.GetString(ContainerImageIDKey),
		ContainerImageName: viper.GetString(ContainerImageNameKey),
		ContainerEnv:       containerEnv,
		ContainerLabels:    containerLabels,
	}

	return args, nil
}