tmpdocker

package module
v1.1.0 Latest Latest
Warning

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

Go to latest
Published: Feb 12, 2021 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 test nginx:1.19.6-alpine@sha256:c2ce58e024275728b00a554ac25628af25c54782865b3487b11c21cafb7fabda
http://127.0.0.1:8080 {
    route {
        tmpdocker {
            service test
            wait 1m
            #scale_timeout 10s
        }
        reverse_proxy 127.0.0.1:8081
    }
}

Build

git clone https://github.com/shynome/caddy2-tmpdocker.git
cd caddy2-tmpdocker
# download vendor way 1
git clone https://github.com/shynome/caddy2-tmpdocker-vendor.git vendor
# or download vendor way 2
go mod download
cd cmd/caddy
go build -mod=vendor -o caddy
./caddy list-modules | grep docker
# you will see `http.handlers.tmpdocker` plugin

Test

docker service create -p 8081:80 --name test nginx:1.19.6-alpine@sha256:c2ce58e024275728b00a554ac25628af25c54782865b3487b11c21cafb7fabda
cd cmd/caddy
go run . run -config 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"`
	WaitingTimeBeforeStop caddy.Duration `json:"wait,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(serviceID string) (count int, err error)

GetRunning node length

func (TmpDocker) GetTmpService

func (tmpd TmpDocker) GetTmpService() (*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() error

ScaleDockerService use docker

func (TmpDocker) ServeHTTP

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

func (TmpDocker) StopDockerService

func (tmpd TmpDocker) StopDockerService() 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 command
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