orztv commited on
Commit
848df0a
·
1 Parent(s): 94866c7
Files changed (3) hide show
  1. Dockerfile +4 -6
  2. docker/redis.conf +0 -0
  3. 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 /var/run/redis && \
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:6380/4"
46
 
47
- EXPOSE 8080 5432 6380
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 6380 --daemonize yes
51
 
52
  # 等待 Redis 启动
53
  for i in $(seq 1 30); do
54
- if redis-cli -p 6380 -a redis_password ping; then
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 6380 -a redis_password ping; then
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