46 lines
1.3 KiB
Docker
46 lines
1.3 KiB
Docker
# Switched to alpine both for smaller image size and because zeromq.js provides
|
|
# a working prebuilt binary for alpine. On Debian, the prebuild was not working
|
|
# and a bug in libzmq's makefile was causing the build from source to fail.
|
|
# https://github.com/zeromq/zeromq.js/issues/529#issuecomment-1370721089
|
|
FROM node:18-alpine as builder
|
|
|
|
# Install general build dependencies
|
|
RUN apk add --no-cache autoconf automake g++ libtool zeromq-dev python3 \
|
|
py3-pip git curl cmake gcc musl-dev pkgconfig openssl-dev
|
|
|
|
# Install Rust (required to build tokenizers)
|
|
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
|
|
ENV PATH="/root/.cargo/bin:${PATH}"
|
|
|
|
RUN git clone -b tokenize https://gitgud.io/khanon/oai-reverse-proxy.git /app
|
|
WORKDIR /app
|
|
|
|
RUN npm ci
|
|
|
|
RUN npm run build && \
|
|
npm prune --production
|
|
|
|
FROM node:18-alpine as runner
|
|
|
|
RUN apk add --no-cache \
|
|
zeromq-dev \
|
|
python3
|
|
|
|
COPY --from=builder /app/build /app/build
|
|
COPY --from=builder /app/node_modules /app/node_modules
|
|
COPY --from=builder /app/.venv /app/.venv
|
|
COPY --from=builder /app/package.json /app/package.json
|
|
|
|
WORKDIR /app
|
|
RUN . .venv/bin/activate
|
|
|
|
EXPOSE 7860
|
|
|
|
ENV NODE_ENV=production
|
|
|
|
# TODO: stamp with tag and git commit
|
|
ENV RENDER=true
|
|
ENV RENDER_GIT_COMMIT=ci-test
|
|
|
|
CMD [ "npm", "start" ]
|