| 369 | } |
| 370 | |
| 371 | func loadImageTag(database string) (string, error) { |
| 372 | var db model.Database |
| 373 | if err := global.DB.Model(&model.Database{}).Where("name = ?", database).First(&db).Error; err != nil { |
| 374 | return "", fmt.Errorf("load database %s info failed, err: %v", database, err) |
| 375 | } |
| 376 | |
| 377 | client, err := docker.NewDockerClient() |
| 378 | if err != nil { |
| 379 | return "", fmt.Errorf("create docker client failed, err: %v", err) |
| 380 | } |
| 381 | defer client.Close() |
| 382 | images, _ := client.ImageList(context.Background(), image.ListOptions{}) |
| 383 | for _, image := range images { |
| 384 | for _, tag := range image.RepoTags { |
| 385 | if strings.HasPrefix(tag, "postgres:"+strings.TrimSuffix(db.Version, "x")) { |
| 386 | return tag, nil |
| 387 | } |
| 388 | } |
| 389 | } |
| 390 | return "postgres:" + strings.ReplaceAll(db.Version, ".x", "-alpine"), nil |
| 391 | } |