65 lines
1.8 KiB
Docker
65 lines
1.8 KiB
Docker
FROM ubuntu:22.04 AS builder
|
|
|
|
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
|
|
|
|
WORKDIR /app
|
|
|
|
COPY examples/migpt .
|
|
COPY packages/client-rust ./client-rust
|
|
|
|
# 更新源
|
|
RUN apt update && apt install curl build-essential -y
|
|
|
|
# 安装 Rust
|
|
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
|
|
|
|
# Create a script file sourced by both interactive and non-interactive bash shells
|
|
ENV BASH_ENV=/root/.bash_env
|
|
RUN touch "$BASH_ENV"
|
|
RUN echo '. "$BASH_ENV"' >> "$HOME/.bashrc"
|
|
RUN echo '[ -s "$HOME/.cargo/env" ] && . "$HOME/.cargo/env"' >> "$BASH_ENV"
|
|
|
|
# nvm
|
|
RUN echo 'export NVM_DIR="$HOME/.nvm"' >> "$BASH_ENV"
|
|
RUN echo '[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"' >> "$BASH_ENV"
|
|
RUN echo '[ -s "$NVM_DIR/bash_completion" ] && . "$NVM_DIR/bash_completion"' >> "$BASH_ENV"
|
|
|
|
# 安装 Node.js
|
|
RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash \
|
|
&& \. $NVM_DIR/nvm.sh && \. $NVM_DIR/bash_completion \
|
|
&& nvm install 22
|
|
|
|
# 安装依赖
|
|
RUN npm install -g corepack \
|
|
&& corepack enable && corepack install \
|
|
&& pnpm install
|
|
|
|
# 构建 Rust Server
|
|
RUN sed -i 's/\.\.\/\.\.\/packages\///g' Cargo.toml \
|
|
&& pnpm build
|
|
|
|
|
|
|
|
|
|
FROM ubuntu:22.04 AS runner
|
|
|
|
WORKDIR /app
|
|
|
|
COPY --from=builder /app/migpt /app/migpt
|
|
COPY --from=builder /app/package.json /app/package.json
|
|
COPY --from=builder /app/tsconfig.json /app/tsconfig.json
|
|
COPY --from=builder /app/node_modules /app/node_modules
|
|
|
|
# 更新源
|
|
RUN apt update && apt install curl build-essential -y
|
|
|
|
ENV NVM_DIR=/root/.nvm
|
|
|
|
# 安装 Node.js
|
|
RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash \
|
|
&& bash -c "source $NVM_DIR/nvm.sh && nvm install 22"
|
|
|
|
ENTRYPOINT ["bash", "-c", "source $NVM_DIR/nvm.sh && exec \"$@\"", "--"]
|
|
|
|
CMD ["npm", "run", "start"]
|