Dockerfile updates

This commit is contained in:
Darren Clarke 2023-05-26 12:02:55 +00:00
parent 842dd95e43
commit 6dc4cfd3cc
21 changed files with 74 additions and 63 deletions

View file

@ -1,4 +1,4 @@
FROM node:18-bullseye-slim as builder
FROM node:20-bullseye-slim as builder
LABEL maintainer="Darren Clarke <darren@redaranj.com>"
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 <darren@redaranj.com>"

View file

@ -1,37 +1,49 @@
FROM node:18-bullseye-slim as builder
LABEL maintainer="Darren Clarke <darren@redaranj.com>"
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 <darren@redaranj.com>"
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"]

View file

@ -3,5 +3,5 @@
set -e
cd ${APP_DIR}
echo "starting shell app"
echo "starting link"
exec dumb-init npm run start

View file

@ -1,35 +0,0 @@
#!/bin/bash
set -e
echo "Creating the Metamigo database and the roles"
# We're using 'template1' because we know it should exist. We should not actually change this database.
psql -Xv ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname template1 <<EOF
CREATE ROLE ${DATABASE_OWNER} WITH LOGIN PASSWORD '${DATABASE_PASSWORD}';
GRANT ${DATABASE_OWNER} TO ${DATABASE_ROOT_OWNER};
CREATE ROLE ${DATABASE_AUTHENTICATOR} WITH LOGIN PASSWORD '${DATABASE_AUTHENTICATOR_PASSWORD}' NOINHERIT;
CREATE ROLE ${DATABASE_VISITOR};
GRANT ${DATABASE_VISITOR} TO ${DATABASE_AUTHENTICATOR};
-- Database permissions
REVOKE ALL ON DATABASE ${DATABASE_NAME} FROM PUBLIC;
GRANT ALL ON DATABASE ${DATABASE_NAME} TO ${DATABASE_OWNER};
GRANT CONNECT ON DATABASE ${DATABASE_NAME} TO ${DATABASE_AUTHENTICATOR};
EOF
echo "Installing extensions into the database"
psql -Xv ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$DATABASE_NAME" <<EOF
CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog;
CREATE EXTENSION IF NOT EXISTS "uuid-ossp" WITH SCHEMA public;
CREATE EXTENSION IF NOT EXISTS citext WITH SCHEMA public;
CREATE EXTENSION IF NOT EXISTS pgcrypto WITH SCHEMA public;
CREATE EXTENSION IF NOT EXISTS tablefunc WITH SCHEMA public;
EOF
echo "Creating roles in the database"
psql -Xv ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$DATABASE_NAME" <<EOF
CREATE ROLE app_anonymous;
CREATE ROLE app_user WITH IN ROLE app_anonymous;
CREATE ROLE app_admin WITH IN ROLE app_user;
GRANT app_anonymous TO ${DATABASE_AUTHENTICATOR};
GRANT app_admin TO ${DATABASE_AUTHENTICATOR};
EOF

View file

@ -1,6 +0,0 @@
echo "Creating Metamigo admin user"
psql -Xv ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$DATABASE_NAME" <<EOF
INSERT INTO app_public.users(email, name, user_role, is_active, created_by)
VALUES('$GITLAB_EMAIL_ADDRESS', 'Admin', 'admin'::app_public.role_type, true, '')
on conflict (email) do update set user_role = 'admin'::app_public.role_type, is_active = true;
EOF

View file

@ -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 <abel@guardianproject.info>"
RUN DEBIAN_FRONTEND=noninteractive apt-get update && \

View file

@ -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 <abel@guardianproject.info>"
RUN DEBIAN_FRONTEND=noninteractive apt-get update && \

View file

@ -50,5 +50,10 @@
"jest-config-link": "*",
"tsconfig-link": "*",
"typescript": "5.0.4"
},
"overrides": {
"@mui/styles": {
"react": "18.2.0"
}
}
}

View file

@ -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 <abel@guardianproject.info>"
RUN DEBIAN_FRONTEND=noninteractive apt-get update && \