Files
Lannamokia_vhdmount/VHDSelectServer/Dockerfile
T
Lannamokia 803e6cdaee feat: 添加PostgreSQL数据库集成和机台管理功能
- 新增PostgreSQL数据库支持,包含内置和外部数据库两种部署模式
- 实现机台管理功能,包括保护状态控制和VHD关键词设置
- 添加用户认证系统,支持会话管理和权限控制
- 更新Docker配置,支持数据库持久化和健康检查
- 扩展API接口,提供完整的RESTful API文档
- 更新客户端代码以支持机台ID和保护检查功能
- 添加数据库初始化脚本和配置指南
2025-10-21 20:10:18 +08:00

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"]