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)
}
}