타임아웃 조건 완화 등
This commit is contained in:
@@ -20,7 +20,7 @@ import (
|
|||||||
const (
|
const (
|
||||||
defaultMMDBPath = "/data/GeoLite2-City.mmdb"
|
defaultMMDBPath = "/data/GeoLite2-City.mmdb"
|
||||||
defaultSchema = "geoip"
|
defaultSchema = "geoip"
|
||||||
defaultLoaderTimeout = 5 * time.Minute
|
defaultLoaderTimeout = 30 * time.Minute
|
||||||
)
|
)
|
||||||
|
|
||||||
type cityRecord struct {
|
type cityRecord struct {
|
||||||
@@ -57,18 +57,19 @@ type cityRow struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
ctx, cancel := context.WithTimeout(context.Background(), defaultLoaderTimeout)
|
|
||||||
defer cancel()
|
|
||||||
|
|
||||||
dbURL := os.Getenv("DATABASE_URL")
|
dbURL := os.Getenv("DATABASE_URL")
|
||||||
if dbURL == "" {
|
if dbURL == "" {
|
||||||
log.Fatal("DATABASE_URL is required")
|
log.Fatal("DATABASE_URL is required")
|
||||||
}
|
}
|
||||||
|
|
||||||
mmdbPath := env("GEOIP_DB_PATH", defaultMMDBPath)
|
mmdbPath := env("GEOIP_DB_PATH", defaultMMDBPath)
|
||||||
|
timeout := envDuration("GEOIP_LOADER_TIMEOUT", defaultLoaderTimeout)
|
||||||
skipIfSame := envBool("GEOIP_LOADER_SKIP_IF_SAME_HASH", true)
|
skipIfSame := envBool("GEOIP_LOADER_SKIP_IF_SAME_HASH", true)
|
||||||
force := envBool("GEOIP_LOADER_FORCE", false)
|
force := envBool("GEOIP_LOADER_FORCE", false)
|
||||||
|
|
||||||
|
ctx, cancel := context.WithTimeout(context.Background(), timeout)
|
||||||
|
defer cancel()
|
||||||
|
|
||||||
log.Printf("starting mmdb load from %s", mmdbPath)
|
log.Printf("starting mmdb load from %s", mmdbPath)
|
||||||
|
|
||||||
hash, err := fileSHA256(mmdbPath)
|
hash, err := fileSHA256(mmdbPath)
|
||||||
@@ -131,6 +132,18 @@ func envBool(key string, fallback bool) bool {
|
|||||||
return parsed
|
return parsed
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func envDuration(key string, fallback time.Duration) time.Duration {
|
||||||
|
val := os.Getenv(key)
|
||||||
|
if val == "" {
|
||||||
|
return fallback
|
||||||
|
}
|
||||||
|
d, err := time.ParseDuration(val)
|
||||||
|
if err != nil {
|
||||||
|
return fallback
|
||||||
|
}
|
||||||
|
return d
|
||||||
|
}
|
||||||
|
|
||||||
func fileSHA256(path string) (string, error) {
|
func fileSHA256(path string) (string, error) {
|
||||||
f, err := os.Open(path)
|
f, err := os.Open(path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -12,9 +12,11 @@ services:
|
|||||||
- PORT=${PORT:-8080}
|
- PORT=${PORT:-8080}
|
||||||
- GEOIP_DB_PATH=${GEOIP_DB_PATH:-/data/GeoLite2-City.mmdb}
|
- GEOIP_DB_PATH=${GEOIP_DB_PATH:-/data/GeoLite2-City.mmdb}
|
||||||
- GEOIP_BACKEND=${GEOIP_BACKEND:-mmdb}
|
- GEOIP_BACKEND=${GEOIP_BACKEND:-mmdb}
|
||||||
|
- GEOIP_LOADER_TIMEOUT=${GEOIP_LOADER_TIMEOUT:-30m}
|
||||||
- DATABASE_URL=postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST:-db}:${POSTGRES_PORT:-5432}/${POSTGRES_DB}?sslmode=disable
|
- DATABASE_URL=postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST:-db}:${POSTGRES_PORT:-5432}/${POSTGRES_DB}?sslmode=disable
|
||||||
command: >
|
command: >
|
||||||
sh -c '
|
sh -c '
|
||||||
|
set -e;
|
||||||
if [ "${GEOIP_BACKEND}" = "postgres" ]; then
|
if [ "${GEOIP_BACKEND}" = "postgres" ]; then
|
||||||
echo "[api] running geoip-loader before api start";
|
echo "[api] running geoip-loader before api start";
|
||||||
geoip-loader;
|
geoip-loader;
|
||||||
|
|||||||
Reference in New Issue
Block a user