func main()

in cmd/clickhouse/entrypoint.go [25:97]


func main() {
	clickhouseExecutable := "/usr/bin/clickhouse"

	isLocalRun := os.Getenv("KUBERNETES_SERVICE_HOST") == ""
	ctx := context.Background()
	if isLocalRun {
		clickhouseExecutable = "/Users/maxim.kolmakov/clickhouse"
		clickhousebackup.SetS3EnvForLocalRun(ctx)
	}

	bucket := getEnvOrFile("S3_BUCKET", "/etc/s3/bucket")
	s3AccessKey := getEnvOrFile("S3_ACCESS_KEY", "/etc/s3/accessKey")
	s3SecretKey := getEnvOrFile("S3_SECRET_KEY", "/etc/s3/secretKey")

	restoreData := os.Getenv("RESTORE_DB") == "true"

	configFile := "/var/lib/clickhouse/config.xml"
	if isLocalRun {
		workingDir, err := os.Getwd()
		if err != nil {
			log.Fatal(err)
		}
		configFile = filepath.Join(workingDir, "deployment", "ch-local-config.xml")
	}

	if restoreData {
		err := prepareConfigAndDir(isLocalRun, bucket, s3AccessKey, s3SecretKey, configFile)
		if err != nil {
			log.Fatal(err)
		}
	}

	cmd := exec.CommandContext(ctx, clickhouseExecutable, "server", "--config-file="+configFile)
	cmd.Stdout = os.Stdout
	cmd.Stderr = os.Stderr

	err := cmd.Start()
	if err != nil {
		log.Fatal(err)
	}

	if restoreData {
		defer func() {
			err = cmd.Process.Signal(syscall.SIGTERM)
			if err != nil {
				log.Println(err)
				_ = cmd.Process.Kill()
			}

			err = cmd.Wait()
			if err != nil {
				log.Println(err)
			}
		}()

		err = restoreDb()
		if err != nil {
			log.Fatal(err)
		}
		return
	}

	go func() {
		// wait for clickhouse server start
		time.Sleep(10 * time.Second)
		requestClearCache()
	}()

	err = cmd.Wait()
	if err != nil {
		log.Fatal(err)
	}
}