metamigo-api(Dockerfile): use turbo prune --docker

This commit is contained in:
Abel Luck 2023-06-02 11:07:55 +00:00
parent 907b9cb931
commit fc35ee0f3d
2 changed files with 71 additions and 79 deletions

View file

@ -1,60 +1,51 @@
FROM node:20-bullseye as builder
FROM node:20 as base
ARG METAMIGO_DIR=/opt/metamigo
RUN mkdir -p ${METAMIGO_DIR}/
WORKDIR ${METAMIGO_DIR}
COPY package.json tsconfig.json ${METAMIGO_DIR}/
COPY . ${METAMIGO_DIR}/
RUN npm install
RUN npm run build
# RUN npx --no-install tsc --build --verbose
FROM base AS builder
ARG APP_DIR=/opt/metamigo-api
RUN mkdir -p ${APP_DIR}/
RUN npm i -g turbo
WORKDIR ${APP_DIR}
COPY . .
RUN turbo prune --scope=metamigo-api --docker
RUN rm -Rf ./node_modules
FROM node:20-bullseye as clean
ARG METAMIGO_DIR=/opt/metamigo
FROM base AS installer
ARG APP_DIR=/opt/metamigo-api
WORKDIR ${APP_DIR}
COPY .gitignore .gitignore
COPY --from=builder ${APP_DIR}/out/json/ .
COPY --from=builder ${APP_DIR}/out/package-lock.json ./package-lock.json
RUN npm ci --omit=dev
COPY --from=builder ${METAMIGO_DIR} ${METAMIGO_DIR}/
RUN rm -Rf ./node_modules
FROM node:20-bullseye as pristine
LABEL maintainer="Abel Luck <abel@guardianproject.info>"
COPY --from=builder ${APP_DIR}/out/full/ .
RUN npm i -g turbo
RUN turbo run build --filter=metamigo-api
FROM base AS runner
ARG APP_DIR=/opt/metamigo-api
WORKDIR ${APP_DIR}/
ARG BUILD_DATE
ARG VERSION
LABEL maintainer="Darren Clarke <darren@redaranj.com>"
LABEL org.label-schema.build-date=$BUILD_DATE
LABEL org.label-schema.version=$VERSION
ENV APP_DIR ${APP_DIR}
RUN DEBIAN_FRONTEND=noninteractive apt-get update && \
apt-get install -y --no-install-recommends --fix-missing \
postgresql-client dumb-init ffmpeg
ARG METAMIGO_DIR=/opt/metamigo
ENV METAMIGO_DIR ${METAMIGO_DIR}
RUN mkdir -p ${METAMIGO_DIR}
RUN chown -R node:node ${METAMIGO_DIR}/
COPY docker-entrypoint.sh /docker-entrypoint.sh
RUN chmod +x /docker-entrypoint.sh
COPY --from=clean ${METAMIGO_DIR}/ ${METAMIGO_DIR}/
WORKDIR ${METAMIGO_DIR}
apt-get install -y --no-install-recommends \
dumb-init
RUN mkdir -p ${APP_DIR}
RUN chown -R node ${APP_DIR}/
USER node
WORKDIR ${APP_DIR}
COPY --from=installer ${APP_DIR}/node_modules/ ./node_modules/
COPY --from=installer ${APP_DIR}/apps/metamigo-api/ ./apps/metamigo-api/
COPY --from=installer ${APP_DIR}/package.json ./package.json
USER root
WORKDIR ${APP_DIR}/apps/metamigo-api/
RUN chmod +x docker-entrypoint.sh
USER node
EXPOSE 3000
EXPOSE 3001
EXPOSE 3002
ENV PORT 3000
ENV NODE_ENV production
ARG BUILD_DATE
ARG VCS_REF
ARG VCS_URL="https://gitlab.com/digiresilience/link/metamigo"
ARG VERSION
LABEL org.label-schema.schema-version="1.0"
LABEL org.label-schema.name="digiresilience.org/link/metamigo"
LABEL org.label-schema.description="part of CDR Link"
LABEL org.label-schema.build-date=$BUILD_DATE
LABEL org.label-schema.vcs-url=$VCS_URL
LABEL org.label-schema.vcs-ref=$VCS_REF
LABEL org.label-schema.version=$VERSION
ENTRYPOINT ["/docker-entrypoint.sh"]
ENTRYPOINT ["/opt/metamigo-api/apps/metamigo-api/docker-entrypoint.sh"]

View file

@ -162,18 +162,37 @@ services:
volumes:
- zammad-data:/opt/zammad
# metamigo-api:
# build: ./apps/metamigo-api
# container_name: metamigo-api
# restart: ${RESTART}
# command: [ "api" ]
# expose:
# - "3001"
# ports:
# - 127.0.0.1:8004:3001
# environment: *common-metamigo-variables
# volumes:
# - ./signald:/signald
metamigo-postgresql:
build: ./docker/postgresql
container_name: metamigo-postgresql
restart: ${RESTART}
volumes:
- metamigo-data:/var/lib/postgresql/data
- ./scripts/bootstrap-metamigo.sh:/docker-entrypoint-initdb.d/bootstrap-metamigo.sh
environment:
<<: *common-metamigo-variables
POSTGRES_PASSWORD: ${METAMIGO_DATABASE_ROOT_PASSWORD}
POSTGRES_USER: "root"
POSTGRES_DB: "metamigo"
ports:
- 127.0.0.1:5433:5432
metamigo-api:
build:
context: .
dockerfile: ./apps/metamigo-api/Dockerfile
container_name: metamigo-api
restart: ${RESTART}
command: [ "api" ]
ports:
- 127.0.0.1:8004:3001
environment: *common-metamigo-variables
volumes:
- ./signald:/signald
depends_on:
- metamigo-postgresql
- signald
# metamigo-frontend:
# build: ./apps/metamigo-frontend
@ -196,22 +215,6 @@ services:
# command: [ "worker" ]
# environment: *common-metamigo-variables
# metamigo-postgresql:
# build: ./docker/postgresql
# restart: ${RESTART}
# volumes:
# - metamigo-data:/var/lib/postgresql/data
# - ./scripts/bootstrap-metamigo.sh:/docker-entrypoint-initdb.d/bootstrap-metamigo.sh
# environment:
# <<: *common-metamigo-variables
# POSTGRES_PASSWORD: ${METAMIGO_DATABASE_ROOT_PASSWORD}
# POSTGRES_USER: "root"
# POSTGRES_DB: "metamigo"
# expose:
# - "5432"
# ports:
# - 127.0.0.1:5433:5432
signald:
container_name: signald
build: ./docker/signald
@ -260,8 +263,6 @@ services:
build:
context: .
dockerfile: ./apps/leafcutter/Dockerfile
expose:
- "3000"
ports:
- "8004:3000"
environment: