# FlowStack 构建节点镜像(Ubuntu 22.04) # 用法: docker build -f deploy/Dockerfile.buildnode -t flowstack-buildnode . # 自定义默认 Node 版本: docker build --build-arg NODE_VERSION=18 -f deploy/Dockerfile.buildnode -t flowstack-buildnode . FROM ubuntu:22.04 ARG DEBIAN_FRONTEND=noninteractive ARG NODE_VERSION=20 ENV NVM_DIR=/root/.nvm \ NVM_NODE_DEFAULT=${NODE_VERSION} # 基础工具 + JDK17 + Maven + Git + Docker CLI(Ubuntu apt 一步到位) RUN apt-get update && apt-get install -y --no-install-recommends \ openjdk-17-jdk-headless \ maven \ git \ docker.io \ curl ca-certificates unzip xz-utils \ tzdata \ && rm -rf /var/lib/apt/lists/* # Golang(官方 tar,apt 的 golang 版本较旧) ARG GOLANG_VERSION=1.24.2 RUN curl -fsSL https://go.dev/dl/go${GOLANG_VERSION}.linux-amd64.tar.gz | tar -C /usr/local -xzf - \ && ln -s /usr/local/go/bin/go /usr/local/bin/go \ && ln -s /usr/local/go/bin/gofmt /usr/local/bin/gofmt # nvm + 默认 Node 版本(构建时可在流水线脚本里 nvm install 灵活切换) ARG NVM_VERSION=v0.40.1 RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/${NVM_VERSION}/install.sh | bash \ && . "$NVM_DIR/nvm.sh" \ && nvm install ${NODE_VERSION} \ && nvm alias default ${NODE_VERSION} \ && echo '. "$NVM_DIR/nvm.sh"' >> /root/.bashrc ENV JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 \ PATH=/usr/local/go/bin:$PATH # 构建工作空间 RUN mkdir -p /data/flowstack-workspace WORKDIR /data/flowstack-workspace # 验证工具链可用 RUN java -version && mvn -version && go version && git --version \ && . "$NVM_DIR/nvm.sh" && node -v && npm -v CMD ["bash", "-c", "echo 'FlowStack build node ready' && bash"]