diff options
Diffstat (limited to 'main.go')
| -rw-r--r-- | main.go | 57 |
1 files changed, 57 insertions, 0 deletions
@@ -0,0 +1,57 @@ +package main + +import ( + "context" + "log/slog" + "net/http" + + "git.leonardobishop.net/instancer/pkg/deployer" + "git.leonardobishop.net/instancer/pkg/janitor" + "git.leonardobishop.net/instancer/pkg/registry" + "git.leonardobishop.net/instancer/web" + "github.com/caarlos0/env/v11" +) + +type Config struct { + ContainerRegistryURL string `env:"CONTAINER_REGISTRY_URL,notEmpty,required"` + ContainerRegistryUsername string `env:"CONTAINER_REGISTRY_USERNAME"` + ContainerRegistryPassword string `env:"CONTAINER_REGISTRY_PASSWORD"` + + InstancerDomain string `env:"INSTANCER_DOMAIN"` + + ImagePrefix string `env:"IMAGE_PREFIX"` + ProxyContainerName string `env:"PROXY_CONTAINER_NAME"` +} + +func main() { + var config Config + + if err := env.Parse(&config); err != nil { + panic(err) + } + + registryClient := registry.RegistryClient{ + URL: config.ContainerRegistryURL, + Username: config.ContainerRegistryUsername, + Password: config.ContainerRegistryPassword, + } + + dockerDeployer, err := deployer.New( + config.ContainerRegistryURL, + config.ContainerRegistryUsername, + config.ContainerRegistryPassword, + config.InstancerDomain, + config.ImagePrefix, + config.ProxyContainerName, + ) + if err != nil { + panic(err) + } + + slog.Info("staring janitor job") + go janitor.StartJanitor(context.Background(), &dockerDeployer) + + slog.Info("starting http server") + err = http.ListenAndServe(":8080", web.NewMux(®istryClient, &dockerDeployer)) + slog.Error("http server closing", "reason", err.Error()) +} |
