From 39d015b1cc421eee650434ae93d447d8898fd32a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=80=97=E5=AD=90?= Date: Fri, 30 Jan 2026 21:59:20 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=85=BC=E5=AE=B9=E4=B8=80=E4=BA=9B?= =?UTF-8?q?=E6=B2=A1=E6=9C=89=E6=8C=87=E5=AE=9A=E5=91=BD=E4=BB=A4=E5=92=8C?= =?UTF-8?q?=E5=85=A5=E5=8F=A3=E7=82=B9=E7=9A=84=E9=95=9C=E5=83=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/data/container.go | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/internal/data/container.go b/internal/data/container.go index f5edefa6..b8f39660 100644 --- a/internal/data/container.go +++ b/internal/data/container.go @@ -100,6 +100,19 @@ func (r *containerRepo) Create(req *request.ContainerCreate) (string, error) { ctx := context.Background() + // 获取镜像信息 + image, err := apiClient.ImageInspect(ctx, req.Image) + if err != nil { + return "", fmt.Errorf("failed to inspect image: %v", err) + } + // 兼容一些没有指定命令和入口点的镜像 + if len(req.Command) == 0 && len(image.Config.Cmd) > 0 { + req.Command = image.Config.Cmd + } + if len(req.Entrypoint) == 0 && len(image.Config.Entrypoint) > 0 { + req.Entrypoint = image.Config.Entrypoint + } + // 构建容器配置 config := &container.Config{ Image: req.Image, @@ -136,10 +149,10 @@ func (r *containerRepo) Create(req *request.ContainerCreate) (string, error) { portMap := make(network.PortMap) for _, port := range req.Ports { if port.ContainerStart-port.ContainerEnd != port.HostStart-port.HostEnd { - return "", fmt.Errorf("容器端口和主机端口数量不匹配(容器: %d 主机: %d)", port.ContainerStart-port.ContainerEnd, port.HostStart-port.HostEnd) + return "", fmt.Errorf("container port and host port count do not match (container: %d host: %d)", port.ContainerStart-port.ContainerEnd, port.HostStart-port.HostEnd) } if port.ContainerStart > port.ContainerEnd || port.HostStart > port.HostEnd || port.ContainerStart < 1 || port.HostStart < 1 { - return "", fmt.Errorf("端口范围不正确") + return "", fmt.Errorf("port range is invalid") } count := uint(0)