2025-04-09 15:52:24 +08:00

69 lines
1.5 KiB
Go

package containers
import (
"bytes"
"encoding/json"
"floares/config"
"fmt"
"io"
"log"
"net/http"
)
type Create struct {
Image string `json:"image,required"`
Name string `json:"name,omitempty"`
}
type CreateJson struct {
Cause string `json:"cause"`
Message string `json:"message"`
Response int `json:"response"`
Id string `json:"Id,omitempty"`
Warning []string `json:"Warnings,omitempty"`
}
type create struct {
Image string `json:"image"`
}
func (c *Create) Create() (string, error) {
var container create
container.Image = c.Image
str, err := json.Marshal(container)
if err != nil {
log.Println(err)
return "", err
}
log.Println(string(str))
req, _ := http.NewRequest(http.MethodPost, config.Entrypoint+"/v2.1.2/libpod/containers/create", bytes.NewBuffer(str))
resp, err := http.DefaultClient.Do(req)
if err != nil {
log.Println(err)
return "", err
}
defer resp.Body.Close()
b, err := io.ReadAll(resp.Body)
log.Println(string(b))
var createJson CreateJson
err = json.NewDecoder(resp.Body).Decode(&createJson)
if err != nil {
log.Println(createJson)
log.Println(err)
return "", err
}
log.Println(createJson)
startContainer(createJson.Id)
return createJson.Id, nil
}
func startContainer(id string) error {
post, err := http.Post(fmt.Sprintf("/%s/libpod/containers/%s/start", config.Entrypoint, id), "application/json", nil)
if err != nil {
return err
}
bytes, err := io.ReadAll(post.Body)
log.Println(string(bytes))
return err
}