- 新增PostgreSQL数据库支持,包含内置和外部数据库两种部署模式 - 实现机台管理功能,包括保护状态控制和VHD关键词设置 - 添加用户认证系统,支持会话管理和权限控制 - 更新Docker配置,支持数据库持久化和健康检查 - 扩展API接口,提供完整的RESTful API文档 - 更新客户端代码以支持机台ID和保护检查功能 - 添加数据库初始化脚本和配置指南
64 lines
1.6 KiB
Docker
64 lines
1.6 KiB
Docker
# 使用官方Node.js运行时作为基础镜像
|
|
FROM node:18-alpine
|
|
|
|
# 安装PostgreSQL和相关工具
|
|
RUN apk add --no-cache \
|
|
postgresql \
|
|
postgresql-contrib \
|
|
postgresql-client \
|
|
su-exec \
|
|
bash \
|
|
curl
|
|
|
|
# 设置工作目录
|
|
WORKDIR /app
|
|
|
|
# 复制package.json和package-lock.json(如果存在)
|
|
COPY package*.json ./
|
|
|
|
# 安装依赖
|
|
RUN npm ci --only=production
|
|
|
|
# 复制应用源代码
|
|
COPY . .
|
|
|
|
# 创建必要的目录
|
|
RUN mkdir -p /app/config /var/lib/postgresql/data /app/scripts
|
|
|
|
# 复制数据库初始化脚本
|
|
COPY init-db.sql /app/scripts/
|
|
COPY docker-entrypoint.sh /app/scripts/
|
|
RUN chmod +x /app/scripts/docker-entrypoint.sh
|
|
|
|
# 暴露端口
|
|
EXPOSE 8080
|
|
|
|
# 设置环境变量
|
|
ENV NODE_ENV=production
|
|
ENV PORT=8080
|
|
ENV CONFIG_PATH=/app/config
|
|
# 数据库配置环境变量
|
|
ENV USE_EMBEDDED_DB=true
|
|
ENV DB_HOST=localhost
|
|
ENV DB_PORT=5432
|
|
ENV DB_NAME=vhd_select
|
|
ENV DB_USER=vhd_user
|
|
ENV DB_PASSWORD=vhd_password
|
|
ENV POSTGRES_DATA_DIR=/var/lib/postgresql/data
|
|
|
|
# 创建postgres用户和nodejs用户
|
|
RUN addgroup -S postgres || true && \
|
|
adduser -S -D -H -h /var/lib/postgresql -s /bin/sh -G postgres postgres || true && \
|
|
addgroup -S nodejs || true && \
|
|
adduser -S nodejs -G nodejs || true
|
|
|
|
# 创建PostgreSQL数据目录和运行时目录并设置权限
|
|
RUN mkdir -p /var/lib/postgresql/data /run/postgresql && \
|
|
chown -R postgres:postgres /var/lib/postgresql /run/postgresql && \
|
|
chmod 700 /var/lib/postgresql/data
|
|
|
|
# 更改应用文件所有权
|
|
RUN chown -R nodejs:nodejs /app
|
|
|
|
# 启动脚本
|
|
CMD ["/app/scripts/docker-entrypoint.sh"] |