From b3fc97f212617145c1b7a916393407f936431a4b Mon Sep 17 00:00:00 2001 From: m1xxos <66390094+m1xxos@users.noreply.github.com> Date: Mon, 9 Dec 2024 20:01:41 +0300 Subject: [PATCH 1/4] feat:lover packages test --- packages/api/Dockerfile | 48 ++++++++++++----------------------------- 1 file changed, 14 insertions(+), 34 deletions(-) diff --git a/packages/api/Dockerfile b/packages/api/Dockerfile index 175362ea5..b321aec5d 100644 --- a/packages/api/Dockerfile +++ b/packages/api/Dockerfile @@ -1,47 +1,33 @@ -FROM node:18.16 as builder +FROM node:18.16 AS builder WORKDIR /app ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD true -RUN apt-get update && apt-get install -y g++ make python3 -COPY package.json . -COPY yarn.lock . -COPY tsconfig.json . -COPY .prettierrc . -COPY .eslintrc . +# Объединение RUN команд и очистка кеша apt-get +RUN apt-get update && apt-get install -y g++ make python3 && apt-get clean && rm -rf /var/lib/apt/lists/* + +COPY package.json yarn.lock tsconfig.json .prettierrc .eslintrc ./ -COPY /packages/readabilityjs/package.json ./packages/readabilityjs/package.json COPY /packages/api/package.json ./packages/api/package.json -COPY /packages/text-to-speech/package.json ./packages/text-to-speech/package.json -COPY /packages/content-handler/package.json ./packages/content-handler/package.json -COPY /packages/liqe/package.json ./packages/liqe/package.json COPY /packages/utils/package.json ./packages/utils/package.json RUN yarn install --pure-lockfile -ADD /packages/readabilityjs ./packages/readabilityjs -ADD /packages/api ./packages/api -ADD /packages/text-to-speech ./packages/text-to-speech -ADD /packages/content-handler ./packages/content-handler -ADD /packages/liqe ./packages/liqe -ADD /packages/utils ./packages/utils +COPY /packages/api ./packages/api +COPY /packages/utils ./packages/utils -RUN yarn workspace @omnivore/utils build -RUN yarn workspace @omnivore/text-to-speech-handler build -RUN yarn workspace @omnivore/content-handler build -RUN yarn workspace @omnivore/liqe build -RUN yarn workspace @omnivore/api build +RUN yarn workspace @omnivore/utils build && \ + yarn workspace @omnivore/api build -# After building, fetch the production dependencies -RUN rm -rf /app/packages/api/node_modules -RUN rm -rf /app/node_modules -RUN yarn install --pure-lockfile --production +# Установка только production зависимостей +RUN rm -rf /app/packages/api/node_modules /app/node_modules && \ + yarn install --pure-lockfile --production -FROM node:18.16 as runner +FROM node:18.16 AS runner LABEL org.opencontainers.image.source="https://github.com/omnivore-app/omnivore" -RUN apt-get update && apt-get install -y netcat-openbsd +RUN apt-get update && apt-get install -y netcat-openbsd && apt-get clean && rm -rf /var/lib/apt/lists/* WORKDIR /app @@ -50,14 +36,8 @@ ENV NODE_OPTIONS=--max-old-space-size=4096 ENV PORT=8080 COPY --from=builder /app/packages/api/dist /app/packages/api/dist -COPY --from=builder /app/packages/readabilityjs/ /app/packages/readabilityjs/ -COPY --from=builder /app/packages/api/package.json /app/packages/api/package.json COPY --from=builder /app/packages/api/node_modules /app/packages/api/node_modules COPY --from=builder /app/node_modules /app/node_modules -COPY --from=builder /app/package.json /app/package.json -COPY --from=builder /app/packages/text-to-speech/ /app/packages/text-to-speech/ -COPY --from=builder /app/packages/content-handler/ /app/packages/content-handler/ -COPY --from=builder /app/packages/liqe/ /app/packages/liqe/ COPY --from=builder /app/packages/utils/ /app/packages/utils/ EXPOSE 8080 From bc1aef741d67af5737f42c14cf9fa777865a2d51 Mon Sep 17 00:00:00 2001 From: m1xxos <66390094+m1xxos@users.noreply.github.com> Date: Mon, 9 Dec 2024 20:44:23 +0300 Subject: [PATCH 2/4] feat:working build --- packages/api/Dockerfile | 37 +++++++++++++++++++++++-------------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/packages/api/Dockerfile b/packages/api/Dockerfile index b321aec5d..542806a0f 100644 --- a/packages/api/Dockerfile +++ b/packages/api/Dockerfile @@ -2,26 +2,27 @@ FROM node:18.16 AS builder WORKDIR /app -ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD true +ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true # Объединение RUN команд и очистка кеша apt-get RUN apt-get update && apt-get install -y g++ make python3 && apt-get clean && rm -rf /var/lib/apt/lists/* +# Копирование всех необходимых файлов и директорий за один раз COPY package.json yarn.lock tsconfig.json .prettierrc .eslintrc ./ +COPY packages ./packages -COPY /packages/api/package.json ./packages/api/package.json -COPY /packages/utils/package.json ./packages/utils/package.json +# Удаление ненужных директорий +RUN find packages -mindepth 1 -type d \ + ! -regex '^packages/\(api\|readabilityjs\|text-to-speech\|content-handler\|liqe\|utils\)\(/.*\)?' \ + -exec rm -rf {} + -RUN yarn install --pure-lockfile - -COPY /packages/api ./packages/api -COPY /packages/utils ./packages/utils - -RUN yarn workspace @omnivore/utils build && \ - yarn workspace @omnivore/api build - -# Установка только production зависимостей -RUN rm -rf /app/packages/api/node_modules /app/node_modules && \ +RUN yarn install --pure-lockfile && \ + yarn workspace @omnivore/utils build && \ + yarn workspace @omnivore/text-to-speech-handler build && \ + yarn workspace @omnivore/content-handler build && \ + yarn workspace @omnivore/liqe build && \ + yarn workspace @omnivore/api build && \ + rm -rf /app/packages/api/node_modules /app/node_modules && \ yarn install --pure-lockfile --production FROM node:18.16 AS runner @@ -31,14 +32,22 @@ RUN apt-get update && apt-get install -y netcat-openbsd && apt-get clean && rm - WORKDIR /app -ENV NODE_ENV production +ENV NODE_ENV=production ENV NODE_OPTIONS=--max-old-space-size=4096 ENV PORT=8080 +# Копирование всех необходимых файлов и директорий за один раз COPY --from=builder /app/packages/api/dist /app/packages/api/dist +COPY --from=builder /app/packages/readabilityjs/ /app/packages/readabilityjs/ +COPY --from=builder /app/packages/api/package.json /app/packages/api/package.json COPY --from=builder /app/packages/api/node_modules /app/packages/api/node_modules COPY --from=builder /app/node_modules /app/node_modules +COPY --from=builder /app/package.json /app/package.json +COPY --from=builder /app/packages/text-to-speech/ /app/packages/text-to-speech/ +COPY --from=builder /app/packages/content-handler/ /app/packages/content-handler/ +COPY --from=builder /app/packages/liqe/ /app/packages/liqe/ COPY --from=builder /app/packages/utils/ /app/packages/utils/ + EXPOSE 8080 CMD ["yarn", "workspace", "@omnivore/api", "start"] From df80ae41432d94c0357501c1d91c365c0a4606c9 Mon Sep 17 00:00:00 2001 From: m1xxos <66390094+m1xxos@users.noreply.github.com> Date: Mon, 9 Dec 2024 21:10:07 +0300 Subject: [PATCH 3/4] feat:alpine build --- packages/api/Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/api/Dockerfile b/packages/api/Dockerfile index 542806a0f..5e2df945a 100644 --- a/packages/api/Dockerfile +++ b/packages/api/Dockerfile @@ -25,10 +25,10 @@ RUN yarn install --pure-lockfile && \ rm -rf /app/packages/api/node_modules /app/node_modules && \ yarn install --pure-lockfile --production -FROM node:18.16 AS runner +FROM node:18.16-alpine AS runner LABEL org.opencontainers.image.source="https://github.com/omnivore-app/omnivore" -RUN apt-get update && apt-get install -y netcat-openbsd && apt-get clean && rm -rf /var/lib/apt/lists/* +RUN apk update && apk add netcat-openbsd && rm -rf /var/cache/apk/* WORKDIR /app From ee32e166bde58a47d9de6fc74a02213f8e1d2f31 Mon Sep 17 00:00:00 2001 From: m1xxos <66390094+m1xxos@users.noreply.github.com> Date: Wed, 11 Dec 2024 20:18:37 +0300 Subject: [PATCH 4/4] docs:api dockerfile docs --- packages/api/Dockerfile | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/packages/api/Dockerfile b/packages/api/Dockerfile index 5e2df945a..e744914eb 100644 --- a/packages/api/Dockerfile +++ b/packages/api/Dockerfile @@ -4,14 +4,12 @@ WORKDIR /app ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true -# Объединение RUN команд и очистка кеша apt-get RUN apt-get update && apt-get install -y g++ make python3 && apt-get clean && rm -rf /var/lib/apt/lists/* -# Копирование всех необходимых файлов и директорий за один раз COPY package.json yarn.lock tsconfig.json .prettierrc .eslintrc ./ COPY packages ./packages -# Удаление ненужных директорий +# Remove all except needed packages RUN find packages -mindepth 1 -type d \ ! -regex '^packages/\(api\|readabilityjs\|text-to-speech\|content-handler\|liqe\|utils\)\(/.*\)?' \ -exec rm -rf {} + @@ -36,7 +34,6 @@ ENV NODE_ENV=production ENV NODE_OPTIONS=--max-old-space-size=4096 ENV PORT=8080 -# Копирование всех необходимых файлов и директорий за один раз COPY --from=builder /app/packages/api/dist /app/packages/api/dist COPY --from=builder /app/packages/readabilityjs/ /app/packages/readabilityjs/ COPY --from=builder /app/packages/api/package.json /app/packages/api/package.json