980 B
docker.go
package controllers
import (
"log"
"net/http"
"os"
"github.com/readysite/readysite/pkg/application"
"github.com/readysite/readysite/readysite.org/internal/sharing"
)
// DockerController handles docker registry distribution.
type DockerController struct {
application.BaseController
}
// Docker returns the controller name and instance.
func Docker() (string, *DockerController) {
return "docker", &DockerController{}
}
// Setup registers routes for the docker registry proxy.
func (c *DockerController) Setup(app *application.App) {
c.BaseController.Setup(app)
// Only run setup in production
if os.Getenv("ENV") != "production" {
return
}
// Register registry proxy for read-only Docker image access
http.Handle("/v2/", sharing.NewRegistryProxy())
log.Println("docker: registry proxy enabled")
}
// Handle returns a request-scoped controller instance.
func (c DockerController) Handle(r *http.Request) application.Controller {
c.Request = r
return &c
}