mirror of https://github.com/Nofated095/Q2TG.git
61 lines
2.3 KiB
Docker
61 lines
2.3 KiB
Docker
# syntax=docker/dockerfile:labs
|
|
|
|
FROM node:18-slim AS base
|
|
RUN rm -f /etc/apt/apt.conf.d/docker-clean; echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' > /etc/apt/apt.conf.d/keep-cache
|
|
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
|
|
--mount=type=cache,target=/var/lib/apt,sharing=locked \
|
|
apt update && apt-get --no-install-recommends install -y \
|
|
fonts-wqy-microhei \
|
|
libpixman-1-0 libcairo2 libpango1.0-0 libgif7 libjpeg62-turbo libpng16-16 librsvg2-2 libvips42 ffmpeg librlottie0-1
|
|
ENV PNPM_HOME="/pnpm"
|
|
ENV PATH="$PNPM_HOME:$PATH"
|
|
RUN corepack enable
|
|
WORKDIR /app
|
|
|
|
FROM base AS build-env
|
|
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
|
|
--mount=type=cache,target=/var/lib/apt,sharing=locked \
|
|
apt update && apt-get --no-install-recommends install -y \
|
|
python3 build-essential pkg-config \
|
|
libpixman-1-dev libcairo2-dev libpango1.0-dev libgif-dev libjpeg62-turbo-dev libpng-dev librsvg2-dev libvips-dev
|
|
COPY package.json pnpm-lock.yaml /app/
|
|
|
|
FROM build-env AS prod-deps
|
|
RUN --mount=type=cache,id=pnpm,target=/pnpm/store,sharing=locked pnpm install --prod --frozen-lockfile
|
|
|
|
FROM build-env AS build
|
|
RUN --mount=type=cache,id=pnpm,target=/pnpm/store,sharing=locked pnpm install --frozen-lockfile
|
|
COPY src tsconfig.json /app/
|
|
COPY prisma /app/
|
|
RUN pnpm exec prisma generate
|
|
RUN pnpm run build
|
|
|
|
FROM debian:bookworm-slim AS tgs-to-gif-build
|
|
ADD https://github.com/conan-io/conan/releases/download/1.61.0/conan-ubuntu-64.deb /tmp/conan.deb
|
|
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
|
|
--mount=type=cache,target=/var/lib/apt,sharing=locked \
|
|
apt update && apt-get --no-install-recommends install -y \
|
|
python3 build-essential pkg-config cmake librlottie-dev zlib1g-dev /tmp/conan.deb
|
|
|
|
ADD https://github.com/ed-asriyan/lottie-converter.git#f626548ced4492235b535552e2449be004a3a435 /app
|
|
WORKDIR /app
|
|
RUN sed -i 's@zlib/1.2.11@@g' conanfile.txt
|
|
RUN conan install .
|
|
RUN sed -i 's/\${CONAN_LIBS}/z/g' CMakeLists.txt
|
|
RUN cmake CMakeLists.txt && make
|
|
|
|
FROM base
|
|
COPY assets /app/
|
|
|
|
COPY --from=tgs-to-gif-build /app/bin/tgs_to_gif /usr/local/bin/tgs_to_gif
|
|
ENV TGS_TO_GIF=/usr/local/bin/tgs_to_gif
|
|
|
|
COPY package.json pnpm-lock.yaml /app/
|
|
COPY --from=prod-deps /app/node_modules /app/node_modules
|
|
COPY prisma /app/
|
|
RUN pnpm exec prisma generate
|
|
COPY --from=build /app/build /app/build
|
|
|
|
ENV DATA_DIR=/app/data
|
|
CMD pnpm start
|