orztv
commited on
Commit
·
d77ba5d
1
Parent(s):
386efc8
update
Browse files- Dockerfile +20 -6
- Dockerfile copy +0 -46
- Dockerfile-pgsql +51 -0
- Dockerfile.plus +0 -79
- docker/app.js +0 -12
- 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 |
-
|
45 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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
|