Multi-Lang/Dockerfile

79 lines
1.7 KiB
Docker
Raw Permalink Normal View History

2024-12-19 03:41:18 +00:00
# 第一阶段:构建阶段
FROM dockerp.com/node:20-alpine AS builder
2024-12-18 06:38:58 +00:00
2024-12-19 03:41:18 +00:00
# 设置环境变量,避免交互式安装
2024-12-18 06:38:58 +00:00
ENV DEBIAN_FRONTEND=noninteractive
2024-12-19 03:41:18 +00:00
# 使用南京大学的 apk 源并安装构建工具
2024-12-20 06:20:31 +00:00
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.nju.edu.cn/g' /etc/apk/repositories && \
2024-12-19 03:41:18 +00:00
apk update && \
apk add --no-cache \
2024-12-20 06:20:31 +00:00
curl \
# git>=2.18 \
build-base \
openjdk11 \
python3 \
py3-pip \
grep \
go \
rust \
ruby \
php \
ghc \
perl \
lua5.3 \
&& \
apk add --no-cache git \
2024-12-19 03:41:18 +00:00
&& rm -rf /var/cache/apk/*
# 设置 npm 镜像源
RUN npm config set registry https://repo.nju.edu.cn/repository/npm/
2024-12-20 06:20:31 +00:00
# 设置工作目录
2024-12-19 03:41:18 +00:00
WORKDIR /workspace
2024-12-20 06:20:31 +00:00
# # 复制 package.json 和 package-lock.json
# COPY package.json ./
# # COPY package-lock.json ./
# # 安装 Node.js 依赖
# RUN npm install
# 复制剩余的项目文件
2024-12-19 03:41:18 +00:00
COPY . .
# 第二阶段:运行阶段(极限小)
FROM dockerp.com/node:20-alpine
# 设置 npm 镜像源
RUN npm config set registry https://repo.nju.edu.cn/repository/npm/
# 使用南京大学的 apk 源并安装运行时依赖
2024-12-20 06:20:31 +00:00
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.nju.edu.cn/g' /etc/apk/repositories && \
2024-12-19 03:41:18 +00:00
apk update && \
apk add --no-cache \
2024-12-20 06:20:31 +00:00
curl \
# git>=2.18 \
openjdk11 \
python3 \
grep \
go \
rust \
ruby \
php \
ghc \
perl \
lua5.3 \
&& \
apk add --no-cache git \
2024-12-19 03:41:18 +00:00
&& rm -rf /var/cache/apk/*
2024-12-18 06:38:58 +00:00
# 设置工作目录
WORKDIR /workspace
2024-12-20 06:20:31 +00:00
# 从构建阶段复制必要文件
COPY --from=builder /workspace /workspace
2024-12-18 06:38:58 +00:00
# 默认启动 Bash
CMD ["bash"]