Merge branch 'main' into dev

This commit is contained in:
yusing 2025-05-06 20:27:37 +08:00
commit 491231e439
3 changed files with 48 additions and 13 deletions

View file

@ -1,6 +1,7 @@
package docker
import (
"context"
"net/url"
"strconv"
"strings"
@ -37,10 +38,11 @@ type (
PublicHostname string `json:"public_hostname"`
PrivateHostname string `json:"private_hostname"`
Aliases []string `json:"aliases"`
IsExcluded bool `json:"is_excluded"`
IsExplicit bool `json:"is_explicit"`
Running bool `json:"running"`
Aliases []string `json:"aliases"`
IsExcluded bool `json:"is_excluded"`
IsExplicit bool `json:"is_explicit"`
IsHostNetworkMode bool `json:"is_host_network_mode"`
Running bool `json:"running"`
}
ContainerImage struct {
Author string `json:"author,omitempty"`
@ -76,10 +78,11 @@ func FromDocker(c *container.SummaryTrimmed, dockerHost string) (res *Container)
PublicPortMapping: helper.getPublicPortMapping(),
PrivatePortMapping: helper.getPrivatePortMapping(),
Aliases: helper.getAliases(),
IsExcluded: isExcluded,
IsExplicit: isExplicit,
Running: c.Status == "running" || c.State == "running",
Aliases: helper.getAliases(),
IsExcluded: isExcluded,
IsExplicit: isExplicit,
IsHostNetworkMode: c.HostConfig.NetworkMode == "host",
Running: c.Status == "running" || c.State == "running",
}
if agent.IsDockerHostAgent(dockerHost) {
@ -201,3 +204,28 @@ func (c *Container) loadDeleteIdlewatcherLabels(helper containerHelper) {
}
}
}
func (c *Container) UpdatePorts() error {
client, err := NewClient(c.DockerHost)
if err != nil {
return err
}
defer client.Close()
inspect, err := client.ContainerInspect(context.Background(), c.ContainerID)
if err != nil {
return err
}
for port := range inspect.Config.ExposedPorts {
if port.Int() == 0 {
continue
}
c.PublicPortMapping[port.Int()] = container.Port{
PublicPort: uint16(port.Int()),
PrivatePort: uint16(port.Int()),
Type: port.Proto(),
}
}
return nil
}

View file

@ -30,9 +30,8 @@ type (
writeLock sync.Mutex
closed bool
wps int64
writeCount int64
bufSize int
lastAdjust time.Time
lineBufPool *synk.BytesPool // buffer pool for formatting a single log line
@ -69,7 +68,7 @@ const (
MinBufferSize = 4 * kilobyte
MaxBufferSize = 8 * megabyte
bufferAdjustInterval = time.Second // How often we check & adjust
bufferAdjustInterval = 5 * time.Second // How often we check & adjust
)
const defaultRotateInterval = time.Hour
@ -297,11 +296,11 @@ func (l *AccessLogger) write(data []byte) {
} else if n < len(data) {
l.handleErr(gperr.Errorf("%w, writing %d bytes, only %d written", io.ErrShortWrite, len(data), n))
}
atomic.AddInt64(&l.wps, int64(n))
atomic.AddInt64(&l.writeCount, int64(n))
}
func (l *AccessLogger) adjustBuffer() {
wps := int(atomic.SwapInt64(&l.wps, 0))
wps := int(atomic.SwapInt64(&l.writeCount, 0)) / int(bufferAdjustInterval.Seconds())
origBufSize := l.bufSize
newBufSize := origBufSize

View file

@ -75,6 +75,14 @@ func (p *DockerProvider) loadRoutesImpl() (route.Routes, gperr.Error) {
continue
}
if container.IsHostNetworkMode {
err := container.UpdatePorts()
if err != nil {
errs.Add(gperr.PrependSubject(container.ContainerName, err))
continue
}
}
newEntries, err := p.routesFromContainerLabels(container)
if err != nil {
errs.Add(err.Subject(container.ContainerName))