orztv
commited on
Commit
·
848df0a
1
Parent(s):
94866c7
update
Browse files- Dockerfile +4 -6
- docker/redis.conf +0 -0
- docker/startup.sh +3 -50
Dockerfile
CHANGED
@@ -3,7 +3,7 @@ FROM nocodb/nocodb:latest
|
|
3 |
# 创建数据目录、设置权限并安装 PostgreSQL 和 Redis
|
4 |
RUN adduser -D -u 1000 nocodb && \
|
5 |
mkdir -p /usr/app/data /run/postgresql /var/log/redis /var/log/postgresql /var/run/redis && \
|
6 |
-
chown -R nocodb:nocodb /usr/app /usr/src/app /usr /run/postgresql /var/log/redis /var/log/postgresql /var/log
|
7 |
apk add --no-cache postgresql postgresql-contrib redis && \
|
8 |
echo "nocodb:nocodb_password" | chpasswd && \
|
9 |
chown nocodb:nocodb /run/postgresql && \
|
@@ -17,10 +17,8 @@ RUN adduser -D -u 1000 nocodb && \
|
|
17 |
sed -i 's/# unixsocket/unixsocket/' /etc/redis.conf && \
|
18 |
sed -i 's/# unixsocketperm 700/unixsocketperm 777/' /etc/redis.conf && \
|
19 |
echo "pidfile /var/run/redis/redis.pid" >> /etc/redis.conf && \
|
20 |
-
sed -i 's/^save/# save/' /etc/redis.conf && \
|
21 |
-
echo "stop-writes-on-bgsave-error no" >> /etc/redis.conf && \
|
22 |
chmod 644 /etc/redis.conf && \
|
23 |
-
chown -R nocodb:nocodb /etc/redis.conf /var/log/redis /var/run/redis /usr/app/data
|
24 |
|
25 |
# 复制启动脚本并设置权限
|
26 |
COPY docker/startup.sh /usr/src/appEntry/startup.sh
|
@@ -42,9 +40,9 @@ ENV LITESTREAM_S3_SKIP_VERIFY=false \
|
|
42 |
PORT=8080 \
|
43 |
NC_ALLOW_LOCAL_HOOKS=true \
|
44 |
NC_DB="pg://localhost:5432?u=nocodb&p=nocodb_password&d=nocodb" \
|
45 |
-
NC_REDIS_URL="redis://:redis_password@localhost:
|
46 |
|
47 |
-
EXPOSE 8080 5432
|
48 |
ENTRYPOINT ["/usr/bin/dumb-init", "--"]
|
49 |
|
50 |
# 运行启动脚本
|
|
|
3 |
# 创建数据目录、设置权限并安装 PostgreSQL 和 Redis
|
4 |
RUN adduser -D -u 1000 nocodb && \
|
5 |
mkdir -p /usr/app/data /run/postgresql /var/log/redis /var/log/postgresql /var/run/redis && \
|
6 |
+
chown -R nocodb:nocodb /usr/app /usr/src/app /usr /run/postgresql /var/log/redis /var/log/postgresql /var/log && \
|
7 |
apk add --no-cache postgresql postgresql-contrib redis && \
|
8 |
echo "nocodb:nocodb_password" | chpasswd && \
|
9 |
chown nocodb:nocodb /run/postgresql && \
|
|
|
17 |
sed -i 's/# unixsocket/unixsocket/' /etc/redis.conf && \
|
18 |
sed -i 's/# unixsocketperm 700/unixsocketperm 777/' /etc/redis.conf && \
|
19 |
echo "pidfile /var/run/redis/redis.pid" >> /etc/redis.conf && \
|
|
|
|
|
20 |
chmod 644 /etc/redis.conf && \
|
21 |
+
chown -R nocodb:nocodb /etc/redis.conf /var/log/redis /var/run/redis /usr/app/data /var/lib/redis
|
22 |
|
23 |
# 复制启动脚本并设置权限
|
24 |
COPY docker/startup.sh /usr/src/appEntry/startup.sh
|
|
|
40 |
PORT=8080 \
|
41 |
NC_ALLOW_LOCAL_HOOKS=true \
|
42 |
NC_DB="pg://localhost:5432?u=nocodb&p=nocodb_password&d=nocodb" \
|
43 |
+
NC_REDIS_URL="redis://:redis_password@localhost:6379/4"
|
44 |
|
45 |
+
EXPOSE 8080 5432 6379
|
46 |
ENTRYPOINT ["/usr/bin/dumb-init", "--"]
|
47 |
|
48 |
# 运行启动脚本
|
docker/redis.conf
ADDED
The diff for this file is too large to render.
See raw diff
|
|
docker/startup.sh
CHANGED
@@ -5,16 +5,6 @@ log() {
|
|
5 |
echo "[$(date +'%Y-%m-%d %H:%M:%S')] $1"
|
6 |
}
|
7 |
|
8 |
-
log "当前用户:"
|
9 |
-
whoami
|
10 |
-
cat /etc/passwd
|
11 |
-
|
12 |
-
log "系统信息:"
|
13 |
-
cat /etc/os-release
|
14 |
-
|
15 |
-
log "环境变量:"
|
16 |
-
env | grep -E "NC_|LITESTREAM_|S3_"
|
17 |
-
|
18 |
log "启动 PostgreSQL..."
|
19 |
pg_ctl -D /usr/app/data/pgdata -l /usr/app/data/pgdata/logfile start
|
20 |
|
@@ -38,20 +28,12 @@ psql -U nocodb -d template1 -c "SELECT 1 FROM pg_database WHERE datname = 'nocod
|
|
38 |
psql -U nocodb -d template1 -c "ALTER USER nocodb WITH PASSWORD 'nocodb_password';"
|
39 |
|
40 |
log "启动 Redis..."
|
41 |
-
# 检查 Redis 配置文件权限
|
42 |
-
ls -l /etc/redis.conf
|
43 |
-
# 检查 Redis 日志目录权限
|
44 |
-
ls -l /var/log/redis
|
45 |
-
# 检查 Redis 数据目录权限
|
46 |
-
ls -l /usr/app/data
|
47 |
-
# 检查 Redis 运行目录权限
|
48 |
-
ls -l /var/run/redis
|
49 |
# 尝试以当前用户启动 Redis
|
50 |
-
redis-server /etc/redis.conf --port
|
51 |
|
52 |
# 等待 Redis 启动
|
53 |
for i in $(seq 1 30); do
|
54 |
-
if redis-cli -p
|
55 |
log "Redis 已成功启动"
|
56 |
break
|
57 |
fi
|
@@ -59,7 +41,7 @@ for i in $(seq 1 30); do
|
|
59 |
sleep 1
|
60 |
done
|
61 |
|
62 |
-
if ! redis-cli -p
|
63 |
log "Redis 启动失败,查看日志:"
|
64 |
cat /var/log/redis/redis.log
|
65 |
log "Redis 进程状态:"
|
@@ -71,34 +53,5 @@ if ! redis-cli -p 6380 -a redis_password ping; then
|
|
71 |
exit 1
|
72 |
fi
|
73 |
|
74 |
-
log "Redis 配置文件:"
|
75 |
-
cat /etc/redis.conf
|
76 |
-
|
77 |
-
log "检查 Redis 持久化配置..."
|
78 |
-
redis-cli -p 6380 -a redis_password CONFIG GET save
|
79 |
-
redis-cli -p 6380 -a redis_password CONFIG GET stop-writes-on-bgsave-error
|
80 |
-
|
81 |
-
log "检查 Redis 数据目录权限..."
|
82 |
-
ls -ld /usr/app/data
|
83 |
-
ls -ld /var/log/redis
|
84 |
-
ls -ld /var/run/redis
|
85 |
-
|
86 |
-
log "检查 Redis 数据目录可写性..."
|
87 |
-
touch /usr/app/data/test_file && rm /usr/app/data/test_file
|
88 |
-
if [ $? -ne 0 ]; then
|
89 |
-
log "警告:Redis 数据目录不可写"
|
90 |
-
log "尝试修改 Redis 数据目录权限..."
|
91 |
-
chmod 755 /usr/app/data
|
92 |
-
fi
|
93 |
-
|
94 |
-
log "检查 Redis 日志文件权限..."
|
95 |
-
ls -l /var/log/redis/redis.log
|
96 |
-
if [ ! -f /var/log/redis/redis.log ]; then
|
97 |
-
log "Redis 日志文件不存在,尝试创建..."
|
98 |
-
touch /var/log/redis/redis.log
|
99 |
-
chown nocodb:nocodb /var/log/redis/redis.log
|
100 |
-
chmod 644 /var/log/redis/redis.log
|
101 |
-
fi
|
102 |
-
|
103 |
log "启动主程序..."
|
104 |
exec /usr/src/appEntry/start.sh
|
|
|
5 |
echo "[$(date +'%Y-%m-%d %H:%M:%S')] $1"
|
6 |
}
|
7 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
log "启动 PostgreSQL..."
|
9 |
pg_ctl -D /usr/app/data/pgdata -l /usr/app/data/pgdata/logfile start
|
10 |
|
|
|
28 |
psql -U nocodb -d template1 -c "ALTER USER nocodb WITH PASSWORD 'nocodb_password';"
|
29 |
|
30 |
log "启动 Redis..."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
31 |
# 尝试以当前用户启动 Redis
|
32 |
+
redis-server /etc/redis.conf --port 6379 --daemonize yes
|
33 |
|
34 |
# 等待 Redis 启动
|
35 |
for i in $(seq 1 30); do
|
36 |
+
if redis-cli -p 6379 -a redis_password ping; then
|
37 |
log "Redis 已成功启动"
|
38 |
break
|
39 |
fi
|
|
|
41 |
sleep 1
|
42 |
done
|
43 |
|
44 |
+
if ! redis-cli -p 6379 -a redis_password ping; then
|
45 |
log "Redis 启动失败,查看日志:"
|
46 |
cat /var/log/redis/redis.log
|
47 |
log "Redis 进程状态:"
|
|
|
53 |
exit 1
|
54 |
fi
|
55 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
56 |
log "启动主程序..."
|
57 |
exec /usr/src/appEntry/start.sh
|