Compare commits
3 Commits
Author | SHA1 | Date | |
---|---|---|---|
ccee5e7257 | |||
8d361f7259 | |||
fa576b42c9 |
112
Dockerfile
112
Dockerfile
@ -1,56 +1,78 @@
|
|||||||
# LABEL authors="fly"
|
# 第一阶段:构建阶段
|
||||||
|
FROM dockerp.com/node:20-alpine AS builder
|
||||||
|
|
||||||
# ENTRYPOINT ["top", "-b"]
|
# 设置环境变量,避免交互式安装
|
||||||
|
|
||||||
# 使用 Ubuntu 作为基础镜像
|
|
||||||
FROM dockerp.com/ubuntu:20.04
|
|
||||||
|
|
||||||
# 设置环境变量
|
|
||||||
ENV DEBIAN_FRONTEND=noninteractive
|
ENV DEBIAN_FRONTEND=noninteractive
|
||||||
|
|
||||||
# 使用南京大学的 apt 源
|
# 使用南京大学的 apk 源并安装构建工具
|
||||||
RUN sed -i 's/archive.ubuntu.com/mirrors.nju.edu.cn/g' /etc/apt/sources.list
|
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.nju.edu.cn/g' /etc/apk/repositories && \
|
||||||
|
apk update && \
|
||||||
|
apk add --no-cache \
|
||||||
|
curl \
|
||||||
|
# git>=2.18 \
|
||||||
|
build-base \
|
||||||
|
openjdk11 \
|
||||||
|
python3 \
|
||||||
|
py3-pip \
|
||||||
|
grep \
|
||||||
|
go \
|
||||||
|
rust \
|
||||||
|
ruby \
|
||||||
|
php \
|
||||||
|
ghc \
|
||||||
|
perl \
|
||||||
|
lua5.3 \
|
||||||
|
&& \
|
||||||
|
apk add --no-cache git \
|
||||||
|
&& rm -rf /var/cache/apk/*
|
||||||
|
|
||||||
# 更新系统并安装常用工具
|
# 设置 npm 镜像源
|
||||||
RUN apt-get update && apt-get install -y \
|
RUN npm config set registry https://repo.nju.edu.cn/repository/npm/
|
||||||
curl \
|
|
||||||
wget \
|
|
||||||
git \
|
|
||||||
build-essential \
|
|
||||||
software-properties-common \
|
|
||||||
apt-transport-https \
|
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
|
||||||
|
|
||||||
# 安装 Node.js(替换为南京大学的源)
|
|
||||||
RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - && \
|
|
||||||
# sed -i 's|deb.nodesource.com|mirror.nju.edu.cn/nodesource/deb|g' /etc/apt/sources.list.d/nodesource.list && \
|
|
||||||
apt-get update && apt-get install -y nodejs && npm config set registry https://repo.nju.edu.cn/repository/npm/ # 修改源
|
|
||||||
|
|
||||||
# 安装其他语言的编译器和工具
|
|
||||||
RUN apt-get update && apt-get install -y \
|
|
||||||
gcc g++ make \
|
|
||||||
openjdk-11-jdk \
|
|
||||||
python3 python3-pip \
|
|
||||||
golang \
|
|
||||||
rustc cargo \
|
|
||||||
ruby-full \
|
|
||||||
php composer \
|
|
||||||
ghc cabal-install \
|
|
||||||
perl \
|
|
||||||
lua5.3 \
|
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
|
||||||
|
|
||||||
# 安装 .NET SDK
|
|
||||||
RUN wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb && \
|
|
||||||
dpkg -i packages-microsoft-prod.deb && \
|
|
||||||
apt-get update && apt-get install -y dotnet-sdk-6.0 && \
|
|
||||||
rm -rf /var/lib/apt/lists/*
|
|
||||||
|
|
||||||
# 设置工作目录
|
# 设置工作目录
|
||||||
WORKDIR /workspace
|
WORKDIR /workspace
|
||||||
|
|
||||||
# 暴露端口(如有需要)
|
# # 复制 package.json 和 package-lock.json
|
||||||
#EXPOSE 3000
|
# COPY package.json ./
|
||||||
|
# # COPY package-lock.json ./
|
||||||
|
|
||||||
|
# # 安装 Node.js 依赖
|
||||||
|
# RUN npm install
|
||||||
|
|
||||||
|
# 复制剩余的项目文件
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
# 第二阶段:运行阶段(极限小)
|
||||||
|
FROM dockerp.com/node:20-alpine
|
||||||
|
|
||||||
|
# 设置 npm 镜像源
|
||||||
|
RUN npm config set registry https://repo.nju.edu.cn/repository/npm/
|
||||||
|
|
||||||
|
# 使用南京大学的 apk 源并安装运行时依赖
|
||||||
|
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.nju.edu.cn/g' /etc/apk/repositories && \
|
||||||
|
apk update && \
|
||||||
|
apk add --no-cache \
|
||||||
|
curl \
|
||||||
|
# git>=2.18 \
|
||||||
|
openjdk11 \
|
||||||
|
python3 \
|
||||||
|
grep \
|
||||||
|
go \
|
||||||
|
rust \
|
||||||
|
ruby \
|
||||||
|
php \
|
||||||
|
ghc \
|
||||||
|
perl \
|
||||||
|
lua5.3 \
|
||||||
|
&& \
|
||||||
|
apk add --no-cache git \
|
||||||
|
&& rm -rf /var/cache/apk/*
|
||||||
|
|
||||||
|
# 设置工作目录
|
||||||
|
WORKDIR /workspace
|
||||||
|
|
||||||
|
# 从构建阶段复制必要文件
|
||||||
|
COPY --from=builder /workspace /workspace
|
||||||
|
|
||||||
# 默认启动 Bash
|
# 默认启动 Bash
|
||||||
CMD ["bash"]
|
CMD ["bash"]
|
||||||
|
33
package.json
Normal file
33
package.json
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
{
|
||||||
|
"name": "multi-language-development-env",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "A Docker image for multi-language development environment with Node.js and other tools",
|
||||||
|
"main": "index.js",
|
||||||
|
"scripts": {
|
||||||
|
"start": "node index.js",
|
||||||
|
"test": "echo \"No tests specified\" && exit 0",
|
||||||
|
"build": "echo \"Building project...\""
|
||||||
|
},
|
||||||
|
"keywords": [
|
||||||
|
"docker",
|
||||||
|
"nodejs",
|
||||||
|
"multi-language",
|
||||||
|
"development"
|
||||||
|
],
|
||||||
|
"author": "fly6516",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"express": "^4.17.1",
|
||||||
|
"axios": "^0.21.1"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"nodemon": "^2.0.7",
|
||||||
|
"webpack": "^5.24.0",
|
||||||
|
"webpack-cli": "^4.5.0",
|
||||||
|
"babel-loader": "^8.2.2"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=14.0.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user