orztv commited on
Commit
d77ba5d
·
1 Parent(s): 386efc8
Files changed (6) hide show
  1. Dockerfile +20 -6
  2. Dockerfile copy +0 -46
  3. Dockerfile-pgsql +51 -0
  4. Dockerfile.plus +0 -79
  5. docker/app.js +0 -12
  6. docker/startup.sh +0 -3
Dockerfile CHANGED
@@ -1,5 +1,11 @@
1
  FROM nocodb/nocodb:latest
2
 
 
 
 
 
 
 
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 && \
@@ -23,7 +29,6 @@ RUN adduser -D -u 1000 nocodb && \
23
 
24
  # 复制启动脚本和 Node.js 示例程序并设置权限
25
  COPY docker/startup.sh /usr/src/appEntry/startup.sh
26
- COPY docker/app.js /usr/src/app/docker/app.js
27
  RUN chmod +x /usr/src/appEntry/startup.sh
28
 
29
  # 切换到 nocodb 用户
@@ -39,13 +44,22 @@ ENV LITESTREAM_S3_SKIP_VERIFY=false \
39
  NC_DOCKER=0.6 \
40
  NC_TOOL_DIR=/usr/app/data/ \
41
  NODE_ENV=production \
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:6379/4"
 
 
 
 
 
 
 
 
 
 
 
46
 
47
- EXPOSE 8080 5432 6379 7860
48
  ENTRYPOINT ["/usr/bin/dumb-init", "--"]
49
 
50
  # 运行启动脚本
51
- CMD ["/usr/src/appEntry/startup.sh"]
 
1
  FROM nocodb/nocodb:latest
2
 
3
+ ARG NC_S3_BUCKET_NAME
4
+ ARG NC_S3_REGION
5
+ ARG NC_S3_ENDPOINT
6
+ ARG NC_S3_ACCESS_KEY
7
+ ARG NC_S3_ACCESS_SECRET
8
+
9
  # 创建数据目录、设置权限并安装 PostgreSQL 和 Redis
10
  RUN adduser -D -u 1000 nocodb && \
11
  mkdir -p /usr/app/data /run/postgresql /var/log/redis /var/log/postgresql /var/run/redis && \
 
29
 
30
  # 复制启动脚本和 Node.js 示例程序并设置权限
31
  COPY docker/startup.sh /usr/src/appEntry/startup.sh
 
32
  RUN chmod +x /usr/src/appEntry/startup.sh
33
 
34
  # 切换到 nocodb 用户
 
44
  NC_DOCKER=0.6 \
45
  NC_TOOL_DIR=/usr/app/data/ \
46
  NODE_ENV=production \
 
47
  NC_ALLOW_LOCAL_HOOKS=true \
48
+ NC_REDIS_URL="redis://:redis_password@localhost:6379/4" \
49
+ S3_BUCKET_NAME=${NC_S3_BUCKET_NAME} \
50
+ S3_REGION=${NC_S3_REGION} \
51
+ S3_ENDPOINT=${NC_S3_ENDPOINT} \
52
+ S3_ACCESS_KEY=${NC_S3_ACCESS_KEY} \
53
+ S3_ACCESS_SECRET=${NC_S3_ACCESS_SECRET} \
54
+ LITESTREAM_S3_BUCKET=${NC_S3_BUCKET_NAME} \
55
+ LITESTREAM_S3_REGION=${NC_S3_REGION} \
56
+ LITESTREAM_S3_ENDPOINT=${NC_S3_ENDPOINT} \
57
+ LITESTREAM_S3_ACCESS_KEY_ID=${NC_S3_ACCESS_KEY} \
58
+ LITESTREAM_S3_SECRET_ACCESS_KEY=${NC_S3_ACCESS_SECRET}
59
+
60
+ EXPOSE 8080
61
 
 
62
  ENTRYPOINT ["/usr/bin/dumb-init", "--"]
63
 
64
  # 运行启动脚本
65
+ CMD ["/usr/src/appEntry/startup.sh"]
Dockerfile copy DELETED
@@ -1,46 +0,0 @@
1
- FROM nocodb/nocodb:latest
2
-
3
- ARG NC_S3_BUCKET_NAME
4
- ARG NC_S3_REGION
5
- ARG NC_S3_ENDPOINT
6
- ARG NC_S3_ACCESS_KEY
7
- ARG NC_S3_ACCESS_SECRET
8
-
9
- # 创建数据目录并设置适当的权限
10
- RUN mkdir -p /usr/app/data && chown -R 1000:1000 /usr/app /usr/src/app /usr
11
-
12
- # 复制启动脚本并设置权限
13
- COPY docker/startup.sh /usr/src/appEntry/startup.sh
14
- RUN chmod +x /usr/src/appEntry/startup.sh
15
-
16
- # 切换到非 root 用户
17
- USER 1000
18
-
19
- WORKDIR /usr/src/app
20
-
21
- ENV LITESTREAM_S3_SKIP_VERIFY=false \
22
- LITESTREAM_RETENTION=1440h \
23
- LITESTREAM_RETENTION_CHECK_INTERVAL=72h \
24
- LITESTREAM_SNAPSHOT_INTERVAL=24h \
25
- LITESTREAM_SYNC_INTERVAL=60s \
26
- NC_DOCKER=0.6 \
27
- NC_TOOL_DIR=/usr/app/data/ \
28
- NODE_ENV=production \
29
- PORT=8080 \
30
- NC_ALLOW_LOCAL_HOOKS=true \
31
- S3_BUCKET_NAME=${NC_S3_BUCKET_NAME} \
32
- S3_REGION=${NC_S3_REGION} \
33
- S3_ENDPOINT=${NC_S3_ENDPOINT} \
34
- S3_ACCESS_KEY=${NC_S3_ACCESS_KEY} \
35
- S3_ACCESS_SECRET=${NC_S3_ACCESS_SECRET} \
36
- LITESTREAM_S3_BUCKET=${NC_S3_BUCKET_NAME} \
37
- LITESTREAM_S3_REGION=${NC_S3_REGION} \
38
- LITESTREAM_S3_ENDPOINT=${NC_S3_ENDPOINT} \
39
- LITESTREAM_S3_ACCESS_KEY_ID=${NC_S3_ACCESS_KEY} \
40
- LITESTREAM_S3_SECRET_ACCESS_KEY=${NC_S3_ACCESS_SECRET}
41
-
42
- EXPOSE 8080
43
- ENTRYPOINT ["/usr/bin/dumb-init", "--"]
44
-
45
- # 运行启动脚本
46
- CMD ["/usr/src/appEntry/startup.sh"]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Dockerfile-pgsql ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ FROM nocodb/nocodb:latest
2
+
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 && \
10
+ su - nocodb -c "initdb -D /usr/app/data/pgdata" && \
11
+ echo "host all all 0.0.0.0/0 md5" >> /usr/app/data/pgdata/pg_hba.conf && \
12
+ echo "listen_addresses='*'" >> /usr/app/data/pgdata/postgresql.conf && \
13
+ sed -i 's/# requirepass foobared/requirepass redis_password/' /etc/redis.conf && \
14
+ sed -i 's/bind 127.0.0.1/bind 0.0.0.0/' /etc/redis.conf && \
15
+ sed -i 's/dir .\//dir \/usr\/app\/data\//' /etc/redis.conf && \
16
+ sed -i 's/logfile ""/logfile "\/var\/log\/redis\/redis.log"/' /etc/redis.conf && \
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
+ apk add --update --no-cache dasel dumb-init nodejs
23
+
24
+ # 复制启动脚本和 Node.js 示例程序并设置权限
25
+ COPY docker/startup.sh /usr/src/appEntry/startup.sh
26
+ COPY docker/app.js /usr/src/app/docker/app.js
27
+ RUN chmod +x /usr/src/appEntry/startup.sh
28
+
29
+ # 切换到 nocodb 用户
30
+ USER nocodb
31
+
32
+ WORKDIR /usr/src/app
33
+
34
+ ENV LITESTREAM_S3_SKIP_VERIFY=false \
35
+ LITESTREAM_RETENTION=1440h \
36
+ LITESTREAM_RETENTION_CHECK_INTERVAL=72h \
37
+ LITESTREAM_SNAPSHOT_INTERVAL=24h \
38
+ LITESTREAM_SYNC_INTERVAL=60s \
39
+ NC_DOCKER=0.6 \
40
+ NC_TOOL_DIR=/usr/app/data/ \
41
+ NODE_ENV=production \
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:6379/4"
46
+
47
+ EXPOSE 8080 5432 6379 7860
48
+ ENTRYPOINT ["/usr/bin/dumb-init", "--"]
49
+
50
+ # 运行启动脚本
51
+ CMD ["/usr/src/appEntry/startup.sh"]
Dockerfile.plus DELETED
@@ -1,79 +0,0 @@
1
- # syntax=docker/dockerfile:1
2
-
3
- ###########
4
- # Litestream Builder
5
- ###########
6
- FROM golang:alpine3.19 as lt-builder
7
-
8
- WORKDIR /usr/src/
9
-
10
- RUN apk add --no-cache git make musl-dev gcc
11
-
12
- # build litestream
13
- RUN git clone https://github.com/benbjohnson/litestream.git litestream
14
- RUN cd litestream && go install ./cmd/litestream
15
- RUN cp $GOPATH/bin/litestream /usr/src/lt
16
-
17
- ###########
18
- # Builder
19
- ###########
20
- FROM node:18.19.1-alpine as builder
21
- WORKDIR /usr/src/app
22
-
23
- # install node-gyp dependencies
24
- RUN apk add --no-cache python3 make g++
25
-
26
- # install pnpm
27
- RUN corepack enable && corepack prepare pnpm@latest --activate
28
-
29
- # Copy application dependency manifests to the container image.
30
- COPY --link ./package.json ./package.json
31
- COPY --link ./docker/main.js ./docker/main.js
32
- COPY --link ./docker/start-litestream.sh /usr/src/appEntry/start.sh
33
- COPY --link src/public/ ./docker/public/
34
-
35
- # for pnpm to generate a flat node_modules without symlinks
36
- # so that modclean could work as expected
37
- RUN echo "node-linker=hoisted" > .npmrc
38
-
39
- # install production dependencies,
40
- # reduce node_module size with modclean & removing sqlite deps,
41
- # and add execute permission to start.sh
42
- RUN pnpm install --prod --shamefully-hoist \
43
- && pnpm dlx modclean --patterns="default:*" --ignore="nc-lib-gui/**,dayjs/**,express-status-monitor/**,@azure/msal-node/dist/**" --run \
44
- && rm -rf ./node_modules/sqlite3/deps \
45
- && chmod +x /usr/src/appEntry/start.sh
46
-
47
- ##########
48
- # Runner
49
- ##########
50
- FROM alpine:3.19
51
- WORKDIR /usr/src/app
52
-
53
- ENV LITESTREAM_S3_SKIP_VERIFY=false \
54
- LITESTREAM_RETENTION=1440h \
55
- LITESTREAM_RETENTION_CHECK_INTERVAL=72h \
56
- LITESTREAM_SNAPSHOT_INTERVAL=24h \
57
- LITESTREAM_SYNC_INTERVAL=60s \
58
- NC_DOCKER=0.6 \
59
- NC_TOOL_DIR=/usr/app/data/ \
60
- NODE_ENV=production \
61
- PORT=8080
62
-
63
- RUN apk add --update --no-cache \
64
- dasel \
65
- dumb-init \
66
- nodejs
67
-
68
- # Copy litestream binary and config file
69
- COPY --link --from=lt-builder /usr/src/lt /usr/local/bin/litestream
70
- COPY --link ./docker/litestream.yml /etc/litestream.yml
71
- # Copy production code & main entry file
72
- COPY --link --from=builder /usr/src/app/ /usr/src/app/
73
- COPY --link --from=builder /usr/src/appEntry/ /usr/src/appEntry/
74
-
75
- EXPOSE 8080
76
- ENTRYPOINT ["/usr/bin/dumb-init", "--"]
77
-
78
- # Start Nocodb
79
- CMD ["/usr/src/appEntry/start.sh"]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
docker/app.js DELETED
@@ -1,12 +0,0 @@
1
- const http = require('http');
2
-
3
- const server = http.createServer((req, res) => {
4
- res.statusCode = 200;
5
- res.setHeader('Content-Type', 'text/plain');
6
- res.end('你好,世界!\n');
7
- });
8
-
9
- const port = 7860;
10
- server.listen(port, () => {
11
- console.log(`服务器运行在 http://localhost:${port}/`);
12
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
docker/startup.sh CHANGED
@@ -53,8 +53,5 @@ if ! redis-cli -p 6379 -a redis_password ping; then
53
  exit 1
54
  fi
55
 
56
- log "启动 Node.js 示例程序..."
57
- node /usr/src/app/docker/app.js &
58
-
59
  log "启动主程序..."
60
  exec /usr/src/appEntry/start.sh
 
53
  exit 1
54
  fi
55
 
 
 
 
56
  log "启动主程序..."
57
  exec /usr/src/appEntry/start.sh