LoadAdditionalResources loads additional resources from the project, such as image references, secrets, configs and exposed ports
(ctx context.Context, dockerCLI command.Cli, project *types.Project)
| 163 | |
| 164 | // LoadAdditionalResources loads additional resources from the project, such as image references, secrets, configs and exposed ports |
| 165 | func LoadAdditionalResources(ctx context.Context, dockerCLI command.Cli, project *types.Project) (*types.Project, error) { |
| 166 | for name, service := range project.Services { |
| 167 | imageName := api.GetImageNameOrDefault(service, project.Name) |
| 168 | |
| 169 | inspect, err := inspectWithPull(ctx, dockerCLI, imageName) |
| 170 | if err != nil { |
| 171 | return nil, err |
| 172 | } |
| 173 | service.Image = imageName |
| 174 | exposed := utils.Set[string]{} |
| 175 | exposed.AddAll(service.Expose...) |
| 176 | for port := range inspect.Config.ExposedPorts { |
| 177 | p, err := network.ParsePort(port) |
| 178 | if err != nil { |
| 179 | return nil, err |
| 180 | } |
| 181 | exposed.Add(strconv.Itoa(int(p.Num()))) |
| 182 | } |
| 183 | for _, port := range service.Ports { |
| 184 | exposed.Add(strconv.Itoa(int(port.Target))) |
| 185 | } |
| 186 | service.Expose = exposed.Elements() |
| 187 | project.Services[name] = service |
| 188 | } |
| 189 | |
| 190 | for name, secret := range project.Secrets { |
| 191 | f, err := loadFileObject(types.FileObjectConfig(secret)) |
| 192 | if err != nil { |
| 193 | return nil, err |
| 194 | } |
| 195 | project.Secrets[name] = types.SecretConfig(f) |
| 196 | } |
| 197 | |
| 198 | for name, config := range project.Configs { |
| 199 | f, err := loadFileObject(types.FileObjectConfig(config)) |
| 200 | if err != nil { |
| 201 | return nil, err |
| 202 | } |
| 203 | project.Configs[name] = types.ConfigObjConfig(f) |
| 204 | } |
| 205 | |
| 206 | return project, nil |
| 207 | } |
| 208 | |
| 209 | func loadFileObject(conf types.FileObjectConfig) (types.FileObjectConfig, error) { |
| 210 | if !conf.External { |
no test coverage detected