tmpdocker

package module
v1.3.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 12, 2023 License: GPL-3.0 Imports: 14 Imported by: 0

README

Description

use docker service to auto scale backend service

# create docker service
# docker service create -p 8081:80 --name tmpdocker_test nginx:1.19.6-alpine@sha256:c2ce58e024275728b00a554ac25628af25c54782865b3487b11c21cafb7fabda
http://127.0.0.1:8080 {
    route {
        tmpdocker {
            service tmpdocker_test
            keep_alive 1m
            #keep_alive 5m
            #scale_timeout 10s
        }
        #tmpdocker tmpdocker_test
        reverse_proxy 127.0.0.1:8081
    }
}

Build

git clone https://github.com/shynome/caddy2-tmpdocker.git
cd caddy2-tmpdocker
go build -o caddy ./cmd/caddy
./caddy list-modules | grep tmpdocker
# you will see `http.handlers.tmpdocker` plugin

Test

docker service create --name tmpdocker_test -p 8081:80 --replicas 0 nginx:1.19.6-alpine@sha256:c2ce58e024275728b00a554ac25628af25c54782865b3487b11c21cafb7fabda
go run ./cmd/caddy run --config ./cmd/caddy/Caddyfile --adapter caddyfile
# another shell
docker service ls
curl http://127.0.0.1:8080
docker service ls
docker service rm test

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type TmpDocker

type TmpDocker struct {
	ServiceName  string         `json:"service_name,omitempty"`
	KeepAlive    caddy.Duration `json:"keep_alive,omitempty"`
	ScaleTimeout caddy.Duration `json:"scale_timeout,omitempty"`
	DockerHost   string         `json:"docker_host,omitempty"`
	// contains filtered or unexported fields
}

TmpDocker is a middleware which can rewrite HTTP requests.

func (TmpDocker) CaddyModule

func (TmpDocker) CaddyModule() caddy.ModuleInfo

CaddyModule returns the Caddy module information.

func (TmpDocker) GetRunning

func (tmpd TmpDocker) GetRunning(ctx context.Context, serviceID string) (count int, err error)

GetRunning node length

func (TmpDocker) GetTmpService

func (tmpd TmpDocker) GetTmpService(ctx context.Context) (*TmpService, error)

GetTmpService v

func (*TmpDocker) Provision

func (tmpd *TmpDocker) Provision(ctx caddy.Context) error

Provision sets up tmpd.

func (TmpDocker) ScaleDockerService

func (tmpd TmpDocker) ScaleDockerService(ctx context.Context) error

ScaleDockerService use docker

func (*TmpDocker) ServeHTTP

func (tmpd *TmpDocker) ServeHTTP(w http.ResponseWriter, r *http.Request, next caddyhttp.Handler) (err error)

func (*TmpDocker) StartChecker added in v1.3.1

func (tmpd *TmpDocker) StartChecker(ctx context.Context)

func (TmpDocker) StopDockerService

func (tmpd TmpDocker) StopDockerService(ctx context.Context) error

StopDockerService use docker

func (*TmpDocker) Validate

func (tmpd *TmpDocker) Validate() (err error)

Validate validates tmpd.

type TmpService

type TmpService struct {
	ID          string
	Replicas    uint64
	ServiceSpec swarm.ServiceSpec
	Version     swarm.Version
}

TmpService v

Directories

Path Synopsis
cmd
caddy
Package main is the entry point of the Caddy application.
Package main is the entry point of the Caddy application.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL