Add additional Dockerfiles

This commit is contained in:
Darren Clarke 2023-03-22 07:11:51 +00:00
parent 2e141f8949
commit c328299c89
13 changed files with 350 additions and 37 deletions

View file

@ -0,0 +1,14 @@
.git
.idea
**/node_modules
!/node_modules
**/build
**/dist
**/tmp
**/.env*
**/coverage
**/.next
**/amigo.*.json
**/.yalc
**/cypress/videos
**/cypress/screenshots

View file

@ -1,8 +1,5 @@
FROM public.ecr.aws/bitnami/node:16-debian-10 as builder FROM node:18-bullseye-slim as builder
LABEL maintainer="Darren Clarke <darren@redaranj.com>" LABEL maintainer="Darren Clarke <darren@redaranj.com>"
RUN useradd -u 1001 -g root node
RUN mkdir /home/node
RUN chown -R node /home/node
ARG APP_DIR=/opt/leafcutter ARG APP_DIR=/opt/leafcutter
RUN mkdir -p ${APP_DIR}/ RUN mkdir -p ${APP_DIR}/
COPY . ${APP_DIR}/ COPY . ${APP_DIR}/
@ -13,7 +10,7 @@ ENV NEXT_PUBLIC_NEXTAUTH_URL https://lc.digiresilience.org
RUN npm install RUN npm install
RUN npm run build RUN npm run build
FROM public.ecr.aws/bitnami/node:16-debian-10 FROM node:18-bullseye-slim
ARG BUILD_DATE ARG BUILD_DATE
ARG VERSION ARG VERSION
LABEL maintainer="Darren Clarke <darren@redaranj.com>" LABEL maintainer="Darren Clarke <darren@redaranj.com>"
@ -25,7 +22,6 @@ 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 \ apt-get install -y --no-install-recommends \
dumb-init dumb-init
RUN useradd -u 1001 -g root node
RUN mkdir -p ${APP_DIR} RUN mkdir -p ${APP_DIR}
RUN chown -R node ${APP_DIR}/ RUN chown -R node ${APP_DIR}/
COPY docker-entrypoint.sh /docker-entrypoint.sh COPY docker-entrypoint.sh /docker-entrypoint.sh

View file

@ -0,0 +1,14 @@
.git
.idea
**/node_modules
!/node_modules
**/build
**/dist
**/tmp
**/.env*
**/coverage
**/.next
**/amigo.*.json
**/.yalc
**/cypress/videos
**/cypress/screenshots

View file

@ -0,0 +1,60 @@
FROM node:18-bullseye as builder
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
RUN rm -Rf ./node_modules
FROM node:18-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
LABEL maintainer="Abel Luck <abel@guardianproject.info>"
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}
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"]

View file

@ -0,0 +1,23 @@
#!/bin/bash
set -e
cd ${AMIGO_DIR}
if [[ "$1" == "api" ]]; then
echo "docker-entrypoint: starting api server"
./cli db -- migrate
exec dumb-init ./cli api
elif [[ "$1" == "worker" ]]; then
echo "docker-entrypoint: starting worker"
exec dumb-init ./cli worker
elif [[ "$1" == "frontend" ]]; then
echo "docker-entrypoint: starting frontend"
exec dumb-init yarn workspace @app/frontend start
elif [[ "$1" == "cli" ]]; then
echo "docker-entrypoint: starting frontend"
shift 1
exec ./cli "$@"
else
echo "docker-entrypoint: missing argument, one of: api, worker, frontend, cli"
exit 1
fi

View file

@ -0,0 +1,14 @@
.git
.idea
**/node_modules
!/node_modules
**/build
**/dist
**/tmp
**/.env*
**/coverage
**/.next
**/amigo.*.json
**/.yalc
**/cypress/videos
**/cypress/screenshots

View file

@ -0,0 +1,61 @@
FROM node:18-bullseye as builder
ARG METAMIGO_DIR=/opt/metamigo
RUN mkdir -p ${METAMIGO_DIR}/
WORKDIR ${METAMIGO_DIR}
COPY package.json tsconfig.json ${METAMIGO_DIR}/
COPY . ${METAMIGO_DIR}/
RUN npx --no-install tsc --build --verbose
RUN npm install
RUN npm run build
RUN rm -Rf ./node_modules
FROM node:18-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
LABEL maintainer="Abel Luck <abel@guardianproject.info>"
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}
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"]

View file

@ -0,0 +1,23 @@
#!/bin/bash
set -e
cd ${AMIGO_DIR}
if [[ "$1" == "api" ]]; then
echo "docker-entrypoint: starting api server"
./cli db -- migrate
exec dumb-init ./cli api
elif [[ "$1" == "worker" ]]; then
echo "docker-entrypoint: starting worker"
exec dumb-init ./cli worker
elif [[ "$1" == "frontend" ]]; then
echo "docker-entrypoint: starting frontend"
exec dumb-init yarn workspace @app/frontend start
elif [[ "$1" == "cli" ]]; then
echo "docker-entrypoint: starting frontend"
shift 1
exec ./cli "$@"
else
echo "docker-entrypoint: missing argument, one of: api, worker, frontend, cli"
exit 1
fi

View file

@ -0,0 +1,14 @@
.git
.idea
**/node_modules
!/node_modules
**/build
**/dist
**/tmp
**/.env*
**/coverage
**/.next
**/amigo.*.json
**/.yalc
**/cypress/videos
**/cypress/screenshots

View file

@ -0,0 +1,61 @@
FROM node:18-bullseye as builder
ARG METAMIGO_DIR=/opt/metamigo
RUN mkdir -p ${METAMIGO_DIR}/
WORKDIR ${METAMIGO_DIR}
COPY package.json tsconfig.json ${METAMIGO_DIR}/
COPY . ${METAMIGO_DIR}/
RUN npx --no-install tsc --build --verbose
RUN npm install
RUN npm run build
RUN rm -Rf ./node_modules
FROM node:18-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
LABEL maintainer="Abel Luck <abel@guardianproject.info>"
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}
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"]

View file

@ -0,0 +1,23 @@
#!/bin/bash
set -e
cd ${AMIGO_DIR}
if [[ "$1" == "api" ]]; then
echo "docker-entrypoint: starting api server"
./cli db -- migrate
exec dumb-init ./cli api
elif [[ "$1" == "worker" ]]; then
echo "docker-entrypoint: starting worker"
exec dumb-init ./cli worker
elif [[ "$1" == "frontend" ]]; then
echo "docker-entrypoint: starting frontend"
exec dumb-init yarn workspace @app/frontend start
elif [[ "$1" == "cli" ]]; then
echo "docker-entrypoint: starting frontend"
shift 1
exec ./cli "$@"
else
echo "docker-entrypoint: missing argument, one of: api, worker, frontend, cli"
exit 1
fi

View file

@ -140,37 +140,37 @@ services:
volumes: volumes:
- zammad-data:/opt/zammad - zammad-data:/opt/zammad
# metamigo-api: metamigo-api:
# build: ./apps/metamigo-api build: ./apps/metamigo-api
# container_name: metamigo-api container_name: metamigo-api
# restart: ${RESTART} restart: ${RESTART}
# command: [ "api" ] command: [ "api" ]
# expose: expose:
# - "3001" - "3001"
# environment: *common-metamigo-variables environment: *common-metamigo-variables
# volumes: volumes:
# - ./signald:/signald - ./signald:/signald
# metamigo-frontend: metamigo-frontend:
# build: ./apps/metamigo-frontend build: ./apps/metamigo-frontend
# container_name: metamigo-frontend container_name: metamigo-frontend
# restart: ${RESTART} restart: ${RESTART}
# command: [ "frontend" ] command: [ "frontend" ]
# expose: expose:
# - "3000" - "3000"
# ports: ports:
# - 127.0.0.1:8002:3000 - 127.0.0.1:8002:3000
# environment: environment:
# <<: *common-metamigo-variables <<: *common-metamigo-variables
# VIRTUAL_HOST: ${METAMIGO_VIRTUAL_HOST} VIRTUAL_HOST: ${METAMIGO_VIRTUAL_HOST}
# VIRTUAL_PORT: 3000 VIRTUAL_PORT: 3000
# metamigo-worker: metamigo-worker:
# build: ./apps/metamigo-worker build: ./apps/metamigo-worker
# container_name: metamigo-worker container_name: metamigo-worker
# restart: ${RESTART} restart: ${RESTART}
# command: [ "worker" ] command: [ "worker" ]
# environment: *common-metamigo-variables environment: *common-metamigo-variables
metamigo-postgresql: metamigo-postgresql:
container_name: metamigo-postgresql container_name: metamigo-postgresql
@ -227,6 +227,16 @@ services:
GOOGLE_CLIENT_ID: ${GOOGLE_CLIENT_ID} GOOGLE_CLIENT_ID: ${GOOGLE_CLIENT_ID}
GOOGLE_CLIENT_SECRET: ${GOOGLE_CLIENT_SECRET} GOOGLE_CLIENT_SECRET: ${GOOGLE_CLIENT_SECRET}
leafcutter:
container_name: leafcutter
build: ./apps/leafcutter
expose:
- "3000"
ports:
- "8004:3000"
environment:
ZAMMAD_PROXY_URL: ${ZAMMAD_PROXY_URL}
volumes: volumes:
elasticsearch-data: elasticsearch-data:
driver: local driver: local

View file

@ -1,6 +1,6 @@
FROM zammad/zammad-docker-compose:5.4.0 AS builder FROM zammad/zammad-docker-compose:5.4.0-1 AS builder
COPY auto_install ${ZAMMAD_TMP_DIR}/auto_install COPY auto_install ${ZAMMAD_TMP_DIR}/auto_install
# RUN sed -i "s/# create install ready file/bundle exec rake zammad:package:migrate/g" contrib/docker/docker-entrypoint.sh # RUN sed -i "s/# create install ready file/bundle exec rake zammad:package:migrate/g" contrib/docker/docker-entrypoint.sh
FROM zammad/zammad-docker-compose:5.4.0 FROM zammad/zammad-docker-compose:5.4.0-1
COPY --from=builder ${ZAMMAD_TMP_DIR} ${ZAMMAD_TMP_DIR} COPY --from=builder ${ZAMMAD_TMP_DIR} ${ZAMMAD_TMP_DIR}