init
This commit is contained in:
39
webplayer/Dockerfile
Normal file
39
webplayer/Dockerfile
Normal file
@@ -0,0 +1,39 @@
|
||||
# ---- Stage 1: Build ----
|
||||
# 选择一个包含 Node.js 的官方镜像。使用 LTS (长期支持) 版本以保证稳定性。
|
||||
# slim 版本体积更小,适合生产环境。
|
||||
FROM node:18-slim AS builder
|
||||
|
||||
# 在容器内创建一个工作目录
|
||||
WORKDIR /usr/src/app
|
||||
|
||||
# 复制 package.json 和 package-lock.json 到工作目录
|
||||
# 这样可以利用 Docker 的层缓存机制,只有当这两个文件变化时才会重新安装依赖
|
||||
COPY package*.json ./
|
||||
|
||||
# 安装项目依赖
|
||||
# 使用 --only=production 参数可以避免安装 devDependencies,减小最终镜像体积
|
||||
RUN npm install --only=production
|
||||
|
||||
# 复制所有项目文件到工作目录
|
||||
COPY . .
|
||||
|
||||
# ---- Stage 2: Production ----
|
||||
# 使用一个更轻量的基础镜像来运行应用
|
||||
FROM node:18-slim
|
||||
|
||||
# 设置容器内的工作目录
|
||||
WORKDIR /usr/src/app
|
||||
|
||||
# 从 builder 阶段复制已经安装好的 node_modules
|
||||
COPY --from=builder /usr/src/app/node_modules ./node_modules
|
||||
|
||||
# 复制应用程序代码
|
||||
COPY --from=builder /usr/src/app .
|
||||
|
||||
# 暴露应用程序运行的端口
|
||||
# 这个端口号应该与您 server.js 中监听的端口一致,后续会通过环境变量传入
|
||||
EXPOSE 8101
|
||||
|
||||
# 定义容器启动时执行的命令
|
||||
# 使用 ["node", "server.js"] 而不是 "node server.js",这是更推荐的 exec 格式
|
||||
CMD ["node", "server.js"]
|
||||
Reference in New Issue
Block a user