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 FROM base AS builder
RUN mkdir -p ${METAMIGO_DIR}/ ARG APP_DIR=/opt/metamigo-api
WORKDIR ${METAMIGO_DIR} RUN mkdir -p ${APP_DIR}/
COPY package.json tsconfig.json ${METAMIGO_DIR}/ RUN npm i -g turbo
COPY . ${METAMIGO_DIR}/ WORKDIR ${APP_DIR}
RUN npm install COPY . .
RUN npm run build RUN turbo prune --scope=metamigo-api --docker
# RUN npx --no-install tsc --build --verbose
RUN rm -Rf ./node_modules
FROM node:20-bullseye as clean FROM base AS installer
ARG METAMIGO_DIR=/opt/metamigo 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}/ COPY --from=builder ${APP_DIR}/out/full/ .
RUN npm i -g turbo
RUN rm -Rf ./node_modules RUN turbo run build --filter=metamigo-api
FROM node:20-bullseye as pristine
LABEL maintainer="Abel Luck <abel@guardianproject.info>"
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 && \ RUN DEBIAN_FRONTEND=noninteractive apt-get update && \
apt-get install -y --no-install-recommends --fix-missing \ apt-get install -y --no-install-recommends \
postgresql-client dumb-init ffmpeg dumb-init
RUN mkdir -p ${APP_DIR}
ARG METAMIGO_DIR=/opt/metamigo RUN chown -R node ${APP_DIR}/
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}
USER node 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 3000
EXPOSE 3001
EXPOSE 3002
ENV PORT 3000 ENV PORT 3000
ENV NODE_ENV production ENV NODE_ENV production
ENTRYPOINT ["/opt/metamigo-api/apps/metamigo-api/docker-entrypoint.sh"]
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"]

View file

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