darkfire514 commited on
Commit
ac21efd
·
verified ·
1 Parent(s): c9f61d2

Update start.sh

Browse files
Files changed (1) hide show
  1. start.sh +27 -5
start.sh CHANGED
@@ -13,15 +13,21 @@ fi
13
 
14
  export POSTGRES_USER="${POSTGRES_USER:-admin}"
15
  export POSTGRES_DB="${POSTGRES_DB:-appdb}"
 
 
16
  export PGDATA="${PGDATA:-/home/user/pgdata}"
17
 
 
18
  export DATA_DIR="${DATA_DIR:-/data}"
19
  export BACKUP_DIR="${BACKUP_DIR:-/data/backups}"
20
  export USER_FILE_DIR="${USER_FILE_DIR:-/data/files}"
21
  export EXPORT_DIR="${EXPORT_DIR:-/data/exports}"
22
  export GENERATED_DIR="${GENERATED_DIR:-/data/generated}"
 
 
23
  export BACKUP_INTERVAL_SECONDS="${BACKUP_INTERVAL_SECONDS:-3600}"
24
 
 
25
  echo "POSTGRES_USER=$POSTGRES_USER"
26
  echo "POSTGRES_DB=$POSTGRES_DB"
27
  echo "PGDATA=$PGDATA"
@@ -40,11 +46,11 @@ mkdir -p "$USER_FILE_DIR"
40
  mkdir -p "$EXPORT_DIR"
41
  mkdir -p "$GENERATED_DIR"
42
 
43
- # PostgreSQL 数据目录必须尽量保持 postgres 用户权限
44
  chown -R postgres:postgres "$PGDATA" || true
45
  chmod 700 "$PGDATA" || true
46
 
47
- # /data 是挂载大磁盘,可能不支持 chown,所以这里允许失败
48
  chmod -R 755 "$DATA_DIR" || true
49
 
50
  echo "Directory status:"
@@ -72,6 +78,7 @@ else
72
  fi
73
 
74
  echo "Starting PostgreSQL..."
 
75
  docker-entrypoint.sh postgres &
76
 
77
  POSTGRES_PID=$!
@@ -87,8 +94,9 @@ echo "PostgreSQL is ready."
87
  if [ "$RESTORE_BACKUP" = "1" ]; then
88
  echo "Restoring database from $BACKUP_DIR/latest.sql ..."
89
 
90
- psql \
91
  -h 127.0.0.1 \
 
92
  -U "$POSTGRES_USER" \
93
  -d "$POSTGRES_DB" \
94
  < "$BACKUP_DIR/latest.sql" || {
@@ -105,8 +113,9 @@ create_backup() {
105
 
106
  echo "Creating backup: $BACKUP_FILE"
107
 
108
- pg_dump \
109
  -h 127.0.0.1 \
 
110
  -U "$POSTGRES_USER" \
111
  -d "$POSTGRES_DB" \
112
  > "$BACKUP_FILE.tmp"
@@ -140,8 +149,21 @@ fi
140
 
141
  backup_loop &
142
 
 
 
 
 
 
 
 
 
 
 
 
 
 
143
  echo "Starting Adminer on port 7860..."
144
- echo "Adminer login:"
145
  echo "System: PostgreSQL"
146
  echo "Server: 127.0.0.1"
147
  echo "Username: $POSTGRES_USER"
 
13
 
14
  export POSTGRES_USER="${POSTGRES_USER:-admin}"
15
  export POSTGRES_DB="${POSTGRES_DB:-appdb}"
16
+
17
+ # PostgreSQL 运行数据目录:建议使用 Space 本地磁盘
18
  export PGDATA="${PGDATA:-/home/user/pgdata}"
19
 
20
+ # 挂载大磁盘目录:用于备份、用户文件、导出文件、生成文件
21
  export DATA_DIR="${DATA_DIR:-/data}"
22
  export BACKUP_DIR="${BACKUP_DIR:-/data/backups}"
23
  export USER_FILE_DIR="${USER_FILE_DIR:-/data/files}"
24
  export EXPORT_DIR="${EXPORT_DIR:-/data/exports}"
25
  export GENERATED_DIR="${GENERATED_DIR:-/data/generated}"
26
+
27
+ # 自动备份间隔,默认 1 小时
28
  export BACKUP_INTERVAL_SECONDS="${BACKUP_INTERVAL_SECONDS:-3600}"
29
 
30
+ echo "Runtime configuration:"
31
  echo "POSTGRES_USER=$POSTGRES_USER"
32
  echo "POSTGRES_DB=$POSTGRES_DB"
33
  echo "PGDATA=$PGDATA"
 
46
  mkdir -p "$EXPORT_DIR"
47
  mkdir -p "$GENERATED_DIR"
48
 
49
+ # PostgreSQL 数据目录需要 postgres 用户权限
50
  chown -R postgres:postgres "$PGDATA" || true
51
  chmod 700 "$PGDATA" || true
52
 
53
+ # /data 是挂载大磁盘,可能不支持 chown,这里只尽量设置权限,允许失败
54
  chmod -R 755 "$DATA_DIR" || true
55
 
56
  echo "Directory status:"
 
78
  fi
79
 
80
  echo "Starting PostgreSQL..."
81
+
82
  docker-entrypoint.sh postgres &
83
 
84
  POSTGRES_PID=$!
 
94
  if [ "$RESTORE_BACKUP" = "1" ]; then
95
  echo "Restoring database from $BACKUP_DIR/latest.sql ..."
96
 
97
+ PGPASSWORD="$POSTGRES_PASSWORD" psql \
98
  -h 127.0.0.1 \
99
+ -p 5432 \
100
  -U "$POSTGRES_USER" \
101
  -d "$POSTGRES_DB" \
102
  < "$BACKUP_DIR/latest.sql" || {
 
113
 
114
  echo "Creating backup: $BACKUP_FILE"
115
 
116
+ PGPASSWORD="$POSTGRES_PASSWORD" pg_dump \
117
  -h 127.0.0.1 \
118
+ -p 5432 \
119
  -U "$POSTGRES_USER" \
120
  -d "$POSTGRES_DB" \
121
  > "$BACKUP_FILE.tmp"
 
149
 
150
  backup_loop &
151
 
152
+ echo "Checking PHP modules..."
153
+
154
+ if php -m | grep -Ei "pgsql|pdo_pgsql" > /dev/null; then
155
+ echo "PHP PostgreSQL extension loaded."
156
+ else
157
+ echo "ERROR: PHP PostgreSQL extension is not loaded."
158
+ echo "Installed PHP modules:"
159
+ php -m
160
+ echo ""
161
+ echo "Please make sure Dockerfile installs php-pgsql."
162
+ exit 1
163
+ fi
164
+
165
  echo "Starting Adminer on port 7860..."
166
+ echo "Adminer login information:"
167
  echo "System: PostgreSQL"
168
  echo "Server: 127.0.0.1"
169
  echo "Username: $POSTGRES_USER"