-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathentrypoint.sh
More file actions
executable file
·118 lines (102 loc) · 3.27 KB
/
Copy pathentrypoint.sh
File metadata and controls
executable file
·118 lines (102 loc) · 3.27 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
#!/bin/sh
set -eu
CONFIG=${CONFIG:-/tmp/apk-cache.toml}
LISTEN=${LISTEN:-${ADDR:-:3142}}
CACHE_ROOT=${CACHE_ROOT:-${CACHE_DIR:-/app/cache}}
DATA_ROOT=${DATA_ROOT:-/app/data}
DATABASE_PATH=${DATABASE_PATH:-}
HASH_STORE_PATH=${HASH_STORE_PATH:-}
HASH_STORE_REBUILD_ON_CORRUPTION=${HASH_STORE_REBUILD_ON_CORRUPTION:-false}
HASH_STORE_TRUST_FILE_STAT=${HASH_STORE_TRUST_FILE_STAT:-true}
HASH_STORE_ACTUAL_REVALIDATE_INTERVAL=${HASH_STORE_ACTUAL_REVALIDATE_INTERVAL:-24h}
APK_UPSTREAM=${APK_UPSTREAM:-${UPSTREAM:-https://dl-cdn.alpinelinux.org}}
APK_UPSTREAM_PROXY=${APK_UPSTREAM_PROXY:-${PROXY:-}}
UPSTREAM_PROXY=${UPSTREAM_PROXY:-}
INDEX_TTL=${INDEX_TTL:-24h}
PACKAGE_TTL=${PACKAGE_TTL:-720h}
MEMORY_CACHE_ENABLED=${MEMORY_CACHE_ENABLED:-true}
MEMORY_CACHE_SIZE=${MEMORY_CACHE_SIZE:-256MB}
MEMORY_CACHE_MAX_ITEM_SIZE=${MEMORY_CACHE_MAX_ITEM_SIZE:-16MB}
MEMORY_CACHE_TTL=${MEMORY_CACHE_TTL:-30m}
MEMORY_CACHE_MAX_ITEMS=${MEMORY_CACHE_MAX_ITEMS:-2048}
TRANSPORT_TIMEOUT=${TRANSPORT_TIMEOUT:-30s}
TRANSPORT_IDLE_CONN_TIMEOUT=${TRANSPORT_IDLE_CONN_TIMEOUT:-90s}
TRANSPORT_MAX_IDLE_CONNS=${TRANSPORT_MAX_IDLE_CONNS:-128}
APK_ENABLED=${APK_ENABLED:-true}
APK_VERIFY_HASH=${APK_VERIFY_HASH:-true}
APK_VERIFY_SIGNATURE=${APK_VERIFY_SIGNATURE:-true}
APT_ENABLED=${APT_ENABLED:-true}
APT_VERIFY_HASH=${APT_VERIFY_HASH:-true}
APT_LOAD_INDEX_ASYNC=${APT_LOAD_INDEX_ASYNC:-true}
PROXY_ENABLED=${PROXY_ENABLED:-true}
PROXY_ALLOW_CONNECT=${PROXY_ALLOW_CONNECT:-true}
PROXY_CACHE_NON_PACKAGE_REQUESTS=${PROXY_CACHE_NON_PACKAGE_REQUESTS:-false}
PROXY_ALLOWED_HOSTS=${PROXY_ALLOWED_HOSTS:-}
mkdir -p "$(dirname "$CONFIG")" "$CACHE_ROOT" "$DATA_ROOT"
cat >"$CONFIG" <<EOF
[server]
listen = "$LISTEN"
[database]
path = "$DATABASE_PATH"
[hash_store]
path = "$HASH_STORE_PATH"
rebuild_on_corruption = $HASH_STORE_REBUILD_ON_CORRUPTION
trust_file_stat = $HASH_STORE_TRUST_FILE_STAT
actual_revalidate_interval = "$HASH_STORE_ACTUAL_REVALIDATE_INTERVAL"
[[upstreams]]
name = "Primary APK upstream"
url = "$APK_UPSTREAM"
kind = "apk"
EOF
if [ -n "$APK_UPSTREAM_PROXY" ]; then
cat >>"$CONFIG" <<EOF
proxy = "$APK_UPSTREAM_PROXY"
EOF
fi
cat >>"$CONFIG" <<EOF
[cache]
root = "$CACHE_ROOT"
data_root = "$DATA_ROOT"
index_ttl = "$INDEX_TTL"
package_ttl = "$PACKAGE_TTL"
[cache.memory]
enabled = $MEMORY_CACHE_ENABLED
max_size = "$MEMORY_CACHE_SIZE"
max_item_size = "$MEMORY_CACHE_MAX_ITEM_SIZE"
ttl = "$MEMORY_CACHE_TTL"
max_items = $MEMORY_CACHE_MAX_ITEMS
[transport]
timeout = "$TRANSPORT_TIMEOUT"
idle_conn_timeout = "$TRANSPORT_IDLE_CONN_TIMEOUT"
max_idle_conns = $TRANSPORT_MAX_IDLE_CONNS
[apk]
enabled = $APK_ENABLED
verify_hash = $APK_VERIFY_HASH
verify_signature = $APK_VERIFY_SIGNATURE
[apt]
enabled = $APT_ENABLED
verify_hash = $APT_VERIFY_HASH
load_index_async = $APT_LOAD_INDEX_ASYNC
[proxy]
enabled = $PROXY_ENABLED
allow_connect = $PROXY_ALLOW_CONNECT
cache_non_package_requests = $PROXY_CACHE_NON_PACKAGE_REQUESTS
upstream_proxy = "$UPSTREAM_PROXY"
EOF
if [ -n "$PROXY_ALLOWED_HOSTS" ]; then
printf 'allowed_hosts = [' >>"$CONFIG"
first=1
old_ifs=$IFS
IFS=','
for host in $PROXY_ALLOWED_HOSTS; do
if [ "$first" -eq 0 ]; then
printf ', ' >>"$CONFIG"
fi
trimmed=$(echo "$host" | sed 's/^ *//;s/ *$//')
printf '"%s"' "$trimmed" >>"$CONFIG"
first=0
done
IFS=$old_ifs
printf ']\n' >>"$CONFIG"
fi
exec /app/apk-cache -config "$CONFIG"