summaryrefslogtreecommitdiffstats
path: root/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'main.go')
-rw-r--r--main.go57
1 files changed, 57 insertions, 0 deletions
diff --git a/main.go b/main.go
new file mode 100644
index 0000000..bd2e3ae
--- /dev/null
+++ b/main.go
@@ -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(&registryClient, &dockerDeployer))
+ slog.Error("http server closing", "reason", err.Error())
+}