42 lines
1.1 KiB
Docker
42 lines
1.1 KiB
Docker
FROM node:20.19-slim
|
|
|
|
# 安装系统依赖和工具
|
|
RUN apt-get update && apt-get install -y \
|
|
curl \
|
|
wget \
|
|
procps \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
WORKDIR /app
|
|
|
|
# Copy application dependency manifests to the container image.
|
|
# A wildcard is used to ensure both package.json AND package-lock.json are copied.
|
|
# Copying this first prevents re-running npm install on every code change.
|
|
COPY package*.json ./
|
|
|
|
# Install dependencies
|
|
RUN yarn install --registry https://registry.npmmirror.com/ --ignore-engines
|
|
|
|
# Copy the rest of the application files to the container image.
|
|
COPY . .
|
|
|
|
# Build the application
|
|
RUN yarn run build
|
|
|
|
RUN echo "Debug: Contents of /app after build:"
|
|
RUN ls -la /app
|
|
RUN echo "Debug: Contents of /app/dist after build:"
|
|
RUN ls -la /app/dist || echo "Debug: /app/dist directory not found or ls failed"
|
|
|
|
# 创建非 root 用户
|
|
RUN groupadd -r nodeuser && useradd -r -g nodeuser nodeuser
|
|
RUN chown -R nodeuser:nodeuser /app
|
|
USER nodeuser
|
|
|
|
EXPOSE 3302
|
|
|
|
# 健康检查
|
|
HEALTHCHECK --interval=30s --timeout=10s --start-period=40s --retries=3 \
|
|
CMD curl -f http://localhost:3302/ping || exit 1
|
|
|
|
CMD ["npm", "run", "start"] |