From 6dc4cfd3ccac653a91ec975a1336188906d97eab Mon Sep 17 00:00:00 2001 From: Darren Clarke Date: Fri, 26 May 2023 12:02:55 +0000 Subject: [PATCH] Dockerfile updates --- .gitlab-ci.yml | 2 +- Makefile | 7 --- apps/leafcutter/Dockerfile | 4 +- apps/link/Dockerfile | 46 ++++++++++++------- apps/link/docker-entrypoint.sh | 2 +- apps/metamigo-api/Dockerfile | 6 +-- apps/metamigo-frontend/Dockerfile | 8 ++-- apps/metamigo-frontend/package.json | 5 ++ apps/metamigo-worker/Dockerfile | 6 +-- docker-compose.yml | 34 +++++++------- docker/elasticsearch/Dockerfile | 2 +- docker/label-studio/Dockerfile | 2 +- docker/memcached/Dockerfile | 2 +- docker/nginx-proxy/Dockerfile | 2 +- docker/postgresql/Dockerfile | 2 +- docker/redis/Dockerfile | 2 +- packages/metamigo-cli/src/config.ts | 3 +- packages/metamigo-cli/tsconfig.json | 1 + .../scripts => scripts}/bootstrap-metamigo.sh | 0 scripts/ci.js | 1 - .../scripts => scripts}/create-admin-user.sh | 0 21 files changed, 74 insertions(+), 63 deletions(-) rename {apps/link/scripts => scripts}/bootstrap-metamigo.sh (100%) delete mode 100644 scripts/ci.js rename {apps/link/scripts => scripts}/create-admin-user.sh (100%) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d6d7a43..4dfdfe6 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,4 +1,4 @@ -image: node:18-bullseye-slim +image: node:20-bullseye-slim include: - /apps/leafcutter/.gitlab-ci.yml diff --git a/Makefile b/Makefile index 32e9ac6..0dd0a4b 100644 --- a/Makefile +++ b/Makefile @@ -58,13 +58,6 @@ setup-signal: create-admin-user: docker exec -i $(shell docker ps -aqf "name=metamigo-postgresql") bash < ./scripts/create-admin-user.sh -force-run-migrations: - docker-compose -p link-docker-compose exec zammad-railsserver bundle exec rails r 'require "/opt/zammad/db/addon/cdr_signal/20210525091356_cdr_signal_channel.rb";require "/opt/zammad/db/addon/cdr_voice/20210525091357_cdr_voice_channel.rb";require "/opt/zammad/db/addon/cdr_whatsapp/20210525091358_cdr_whatsapp_channel.rb"; require "/opt/zammad/db/addon/pgpsupport/20220403000001_pgpsupport.rb";CdrSignalChannel.new.up;CdrVoiceChannel.new.up;CdrWhatsappChannel.new.up;PGPSupport.new.up;' - -sso: - docker-compose exec zammad-nginx sed -i '/proxy_set_header X-Forwarded-User "";/d' /opt/zammad/contrib/nginx/zammad.conf; - docker-compose exec zammad-nginx service nginx restart; - start: CURRENT_UID=$(CURRENT_UID) docker-compose up -d diff --git a/apps/leafcutter/Dockerfile b/apps/leafcutter/Dockerfile index 2f64d4d..a0da174 100644 --- a/apps/leafcutter/Dockerfile +++ b/apps/leafcutter/Dockerfile @@ -1,4 +1,4 @@ -FROM node:18-bullseye-slim as builder +FROM node:20-bullseye-slim as builder LABEL maintainer="Darren Clarke " ARG APP_DIR=/opt/leafcutter RUN mkdir -p ${APP_DIR}/ @@ -10,7 +10,7 @@ ENV NEXT_PUBLIC_NEXTAUTH_URL https://lc.digiresilience.org RUN npm install RUN npm run build -FROM node:18-bullseye-slim +FROM node:20-bullseye-slim ARG BUILD_DATE ARG VERSION LABEL maintainer="Darren Clarke " diff --git a/apps/link/Dockerfile b/apps/link/Dockerfile index 5871450..c3685a7 100644 --- a/apps/link/Dockerfile +++ b/apps/link/Dockerfile @@ -1,37 +1,49 @@ -FROM node:18-bullseye-slim as builder -LABEL maintainer="Darren Clarke " + +FROM node:20 AS base + +FROM base AS builder ARG APP_DIR=/opt/link RUN mkdir -p ${APP_DIR}/ -COPY . ${APP_DIR}/ -RUN chown -R node ${APP_DIR}/ -USER node +RUN npm i -g turbo WORKDIR ${APP_DIR} -RUN npm install -RUN npm run build +COPY . . +RUN turbo prune --scope=link --docker -FROM node:18-bullseye-slim +FROM base AS installer +ARG APP_DIR=/opt/link +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 install + +COPY --from=builder ${APP_DIR}/out/full/ . +RUN npm i -g turbo +RUN turbo run build --filter=link + +FROM base AS runner +ARG APP_DIR=/opt/link +WORKDIR ${APP_DIR}/ ARG BUILD_DATE ARG VERSION LABEL maintainer="Darren Clarke " LABEL org.label-schema.build-date=$BUILD_DATE LABEL org.label-schema.version=$VERSION -ARG APP_DIR=/opt/link ENV APP_DIR ${APP_DIR} - RUN DEBIAN_FRONTEND=noninteractive apt-get update && \ apt-get install -y --no-install-recommends \ dumb-init RUN mkdir -p ${APP_DIR} RUN chown -R node ${APP_DIR}/ -COPY docker-entrypoint.sh /docker-entrypoint.sh -RUN chmod +x /docker-entrypoint.sh + USER node WORKDIR ${APP_DIR} -COPY --from=builder ${APP_DIR}/node_modules ./node_modules -COPY --from=builder ${APP_DIR}/.next ./.next -COPY --from=builder ${APP_DIR}/next.config.js ./next.config.js +COPY --from=installer ${APP_DIR}/node_modules/ ./node_modules/ +COPY --from=installer ${APP_DIR}/apps/link/ ./apps/link/ +USER root +RUN chmod +x ./apps/link/docker-entrypoint.sh +USER node EXPOSE 3000 ENV PORT 3000 ENV NODE_ENV production -COPY package.json ./ -ENTRYPOINT ["/docker-entrypoint.sh"] +ENTRYPOINT ["./apps/link/docker-entrypoint.sh"] diff --git a/apps/link/docker-entrypoint.sh b/apps/link/docker-entrypoint.sh index b6ff738..49298d5 100644 --- a/apps/link/docker-entrypoint.sh +++ b/apps/link/docker-entrypoint.sh @@ -3,5 +3,5 @@ set -e cd ${APP_DIR} -echo "starting shell app" +echo "starting link" exec dumb-init npm run start diff --git a/apps/metamigo-api/Dockerfile b/apps/metamigo-api/Dockerfile index 973ddb5..95eddf6 100644 --- a/apps/metamigo-api/Dockerfile +++ b/apps/metamigo-api/Dockerfile @@ -1,4 +1,4 @@ -FROM node:18-bullseye as builder +FROM node:20-bullseye as builder ARG METAMIGO_DIR=/opt/metamigo RUN mkdir -p ${METAMIGO_DIR}/ @@ -11,14 +11,14 @@ RUN npm run build RUN rm -Rf ./node_modules -FROM node:18-bullseye as clean +FROM node:20-bullseye as clean ARG METAMIGO_DIR=/opt/metamigo COPY --from=builder ${METAMIGO_DIR} ${METAMIGO_DIR}/ RUN rm -Rf ./node_modules -FROM node:18-bullseye as pristine +FROM node:20-bullseye as pristine LABEL maintainer="Abel Luck " RUN DEBIAN_FRONTEND=noninteractive apt-get update && \ diff --git a/apps/metamigo-frontend/Dockerfile b/apps/metamigo-frontend/Dockerfile index e8b8116..0be6c17 100644 --- a/apps/metamigo-frontend/Dockerfile +++ b/apps/metamigo-frontend/Dockerfile @@ -1,4 +1,4 @@ -FROM node:18-bullseye as builder +FROM node:20-bullseye as builder ARG METAMIGO_DIR=/opt/metamigo RUN mkdir -p ${METAMIGO_DIR}/ @@ -6,20 +6,20 @@ WORKDIR ${METAMIGO_DIR} COPY package.json tsconfig.json ${METAMIGO_DIR}/ COPY . ${METAMIGO_DIR}/ -RUN npx --no-install tsc --build --verbose +RUN npm --no-install tsc --build --verbose RUN npm install RUN npm run build RUN rm -Rf ./node_modules -FROM node:18-bullseye as clean +FROM node:20-bullseye as clean ARG METAMIGO_DIR=/opt/metamigo COPY --from=builder ${METAMIGO_DIR} ${METAMIGO_DIR}/ RUN rm -Rf ./node_modules -FROM node:18-bullseye as pristine +FROM node:20-bullseye as pristine LABEL maintainer="Abel Luck " RUN DEBIAN_FRONTEND=noninteractive apt-get update && \ diff --git a/apps/metamigo-frontend/package.json b/apps/metamigo-frontend/package.json index eb62375..13386d4 100644 --- a/apps/metamigo-frontend/package.json +++ b/apps/metamigo-frontend/package.json @@ -50,5 +50,10 @@ "jest-config-link": "*", "tsconfig-link": "*", "typescript": "5.0.4" + }, + "overrides": { + "@mui/styles": { + "react": "18.2.0" + } } } diff --git a/apps/metamigo-worker/Dockerfile b/apps/metamigo-worker/Dockerfile index e8b8116..b18b543 100644 --- a/apps/metamigo-worker/Dockerfile +++ b/apps/metamigo-worker/Dockerfile @@ -1,4 +1,4 @@ -FROM node:18-bullseye as builder +FROM node:20-bullseye as builder ARG METAMIGO_DIR=/opt/metamigo RUN mkdir -p ${METAMIGO_DIR}/ @@ -12,14 +12,14 @@ RUN npm run build RUN rm -Rf ./node_modules -FROM node:18-bullseye as clean +FROM node:20-bullseye as clean ARG METAMIGO_DIR=/opt/metamigo COPY --from=builder ${METAMIGO_DIR} ${METAMIGO_DIR}/ RUN rm -Rf ./node_modules -FROM node:18-bullseye as pristine +FROM node:20-bullseye as pristine LABEL maintainer="Abel Luck " RUN DEBIAN_FRONTEND=noninteractive apt-get update && \ diff --git a/docker-compose.yml b/docker-compose.yml index 4b9c48f..6933d9d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -179,21 +179,21 @@ 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:5432:5432 + # 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:5432:5432 signald: container_name: signald @@ -214,7 +214,9 @@ services: link: container_name: link - build: ./apps/link + build: + context: . + dockerfile: ./apps/link/Dockerfile expose: - "3000" ports: diff --git a/docker/elasticsearch/Dockerfile b/docker/elasticsearch/Dockerfile index 74ea8f1..8533f82 100644 --- a/docker/elasticsearch/Dockerfile +++ b/docker/elasticsearch/Dockerfile @@ -1 +1 @@ -FROM docker.elastic.co/elasticsearch/elasticsearch:8.6.2 +FROM docker.elastic.co/elasticsearch/elasticsearch:8.7.1 diff --git a/docker/label-studio/Dockerfile b/docker/label-studio/Dockerfile index d410ed3..59f1d45 100644 --- a/docker/label-studio/Dockerfile +++ b/docker/label-studio/Dockerfile @@ -1 +1 @@ -FROM heartexlabs/label-studio:1.7.1 +FROM heartexlabs/label-studio:1.7.3 diff --git a/docker/memcached/Dockerfile b/docker/memcached/Dockerfile index 769c162..67727b2 100644 --- a/docker/memcached/Dockerfile +++ b/docker/memcached/Dockerfile @@ -1 +1 @@ -FROM memcached:1.6.10-alpine +FROM memcached:1.6.20-bullseye diff --git a/docker/nginx-proxy/Dockerfile b/docker/nginx-proxy/Dockerfile index be4aa46..64b0ebc 100644 --- a/docker/nginx-proxy/Dockerfile +++ b/docker/nginx-proxy/Dockerfile @@ -1 +1 @@ -FROM nginxproxy/nginx-proxy:1.2.1 +FROM nginxproxy/nginx-proxy:1.3.0 diff --git a/docker/postgresql/Dockerfile b/docker/postgresql/Dockerfile index f730c10..bfd76dd 100644 --- a/docker/postgresql/Dockerfile +++ b/docker/postgresql/Dockerfile @@ -1 +1 @@ -FROM postgres:15.2-alpine +FROM postgres:15.3-bullseye diff --git a/docker/redis/Dockerfile b/docker/redis/Dockerfile index c68bf93..2265506 100644 --- a/docker/redis/Dockerfile +++ b/docker/redis/Dockerfile @@ -1 +1 @@ -FROM redis:7.0.5-alpine +FROM redis:7.0.11-bullseye diff --git a/packages/metamigo-cli/src/config.ts b/packages/metamigo-cli/src/config.ts index eaa8ebb..15fef11 100644 --- a/packages/metamigo-cli/src/config.ts +++ b/packages/metamigo-cli/src/config.ts @@ -6,13 +6,12 @@ import { loadConfigRaw } from "@digiresilience/metamigo-config"; export const genConf = async (): Promise => { const c = await loadConfigRaw(); - // @ts-expect-error TS2589 const generated = generateConfig(c); console.log(generated); }; export const genSchema = async (): Promise => { - const c = await loadConfigRaw(); + const c: any = await loadConfigRaw(); console.log(c.getSchemaString()); }; diff --git a/packages/metamigo-cli/tsconfig.json b/packages/metamigo-cli/tsconfig.json index 3395a3e..a5549f0 100644 --- a/packages/metamigo-cli/tsconfig.json +++ b/packages/metamigo-cli/tsconfig.json @@ -1,6 +1,7 @@ { "extends": "tsconfig-link", "compilerOptions": { + "lib": ["es2020", "DOM"], "incremental": true, "outDir": "build/main", "rootDir": "src", diff --git a/apps/link/scripts/bootstrap-metamigo.sh b/scripts/bootstrap-metamigo.sh similarity index 100% rename from apps/link/scripts/bootstrap-metamigo.sh rename to scripts/bootstrap-metamigo.sh diff --git a/scripts/ci.js b/scripts/ci.js deleted file mode 100644 index 5ed0e0d..0000000 --- a/scripts/ci.js +++ /dev/null @@ -1 +0,0 @@ -// tk diff --git a/apps/link/scripts/create-admin-user.sh b/scripts/create-admin-user.sh similarity index 100% rename from apps/link/scripts/create-admin-user.sh rename to scripts/create-admin-user.sh