metamigo-frontend: build and run in docker
This commit is contained in:
parent
2f02915446
commit
fd7e543d16
8 changed files with 80 additions and 101 deletions
|
|
@ -1,4 +1,5 @@
|
||||||
node_modules
|
node_modules
|
||||||
out
|
out
|
||||||
signald
|
signald
|
||||||
docker-compose.yml
|
docker-compose.yml
|
||||||
|
README.md
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
Local dev with docker-compose
|
Local dev with docker-compose
|
||||||
|
|
||||||
* Create `link-stack/.env` from Bitwarden `root .env for link-stack`
|
* Create `link-stack/.env` from Bitwarden `.env for root of link-stack`
|
||||||
* Run local dev with docker-compose:
|
* Run local dev with docker-compose:
|
||||||
```
|
```
|
||||||
git clone ...
|
git clone ...
|
||||||
|
|
@ -18,7 +18,6 @@ Or for local dev of a single app
|
||||||
* Create `link-stack/apps/metamigo-frontend/.metamigo.local.json` from Bitwarden `.metamigo.local.json for link-stack/apps/metamigo/frontend`
|
* Create `link-stack/apps/metamigo-frontend/.metamigo.local.json` from Bitwarden `.metamigo.local.json for link-stack/apps/metamigo/frontend`
|
||||||
* Build locally for development:
|
* Build locally for development:
|
||||||
```
|
```
|
||||||
make build
|
|
||||||
npm install
|
npm install
|
||||||
turbo --concurrency 30 build
|
turbo --concurrency 30 build
|
||||||
turbo --concurrency 30 dev
|
turbo --concurrency 30 dev
|
||||||
|
|
|
||||||
|
|
@ -8,9 +8,6 @@ if [[ "$1" == "api" ]]; then
|
||||||
elif [[ "$1" == "worker" ]]; then
|
elif [[ "$1" == "worker" ]]; then
|
||||||
echo "docker-entrypoint: starting worker"
|
echo "docker-entrypoint: starting worker"
|
||||||
exec dumb-init ./cli 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
|
elif [[ "$1" == "cli" ]]; then
|
||||||
echo "docker-entrypoint: starting frontend"
|
echo "docker-entrypoint: starting frontend"
|
||||||
shift 1
|
shift 1
|
||||||
|
|
|
||||||
|
|
@ -1,61 +1,52 @@
|
||||||
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-frontend
|
||||||
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}
|
||||||
|
COPY . .
|
||||||
|
RUN turbo prune --scope=@digiresilience/metamigo-frontend --docker
|
||||||
|
|
||||||
RUN npm --no-install tsc --build --verbose
|
|
||||||
RUN npm install
|
|
||||||
RUN npm run build
|
|
||||||
|
|
||||||
RUN rm -Rf ./node_modules
|
FROM base AS installer
|
||||||
|
ARG APP_DIR=/opt/metamigo-frontend
|
||||||
|
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
|
||||||
|
|
||||||
FROM node:20-bullseye as clean
|
COPY --from=builder ${APP_DIR}/out/full/ .
|
||||||
ARG METAMIGO_DIR=/opt/metamigo
|
RUN npm i -g turbo
|
||||||
|
RUN turbo run build --filter=metamigo-frontend
|
||||||
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>"
|
|
||||||
|
|
||||||
|
FROM base AS runner
|
||||||
|
ARG APP_DIR=/opt/metamigo-frontend
|
||||||
|
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}/packages/ ./packages/
|
||||||
|
COPY --from=installer ${APP_DIR}/apps/metamigo-frontend/ ./apps/metamigo-frontend/
|
||||||
|
COPY --from=installer ${APP_DIR}/package.json ./package.json
|
||||||
|
USER root
|
||||||
|
WORKDIR ${APP_DIR}/apps/metamigo-frontend/
|
||||||
|
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-frontend/apps/metamigo-frontend/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"]
|
|
||||||
|
|
|
||||||
|
|
@ -1,23 +1,5 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
echo "starting leafcutter"
|
||||||
cd ${AMIGO_DIR}
|
exec dumb-init npm run start
|
||||||
|
|
||||||
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
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"name": "metamigo-frontend",
|
"name": "@digiresilience/metamigo-frontend",
|
||||||
"version": "0.2.0",
|
"version": "0.2.0",
|
||||||
"private": true,
|
"private": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
|
|
||||||
|
|
@ -194,26 +194,32 @@ services:
|
||||||
- metamigo-postgresql
|
- metamigo-postgresql
|
||||||
- signald
|
- signald
|
||||||
|
|
||||||
# metamigo-frontend:
|
metamigo-frontend:
|
||||||
# build: ./apps/metamigo-frontend
|
build:
|
||||||
# container_name: metamigo-frontend
|
context: .
|
||||||
# restart: ${RESTART}
|
dockerfile: ./apps/metamigo-frontend/Dockerfile
|
||||||
# command: [ "frontend" ]
|
container_name: metamigo-frontend
|
||||||
# expose:
|
restart: ${RESTART}
|
||||||
# - "3000"
|
command: [ "frontend" ]
|
||||||
# ports:
|
expose:
|
||||||
# - 127.0.0.1:8002:3000
|
- "3000"
|
||||||
# environment:
|
ports:
|
||||||
# <<: *common-metamigo-variables
|
- 127.0.0.1:8002:3000
|
||||||
# VIRTUAL_HOST: ${METAMIGO_VIRTUAL_HOST}
|
depends_on:
|
||||||
# VIRTUAL_PORT: 3000
|
- metamigo-api
|
||||||
|
environment:
|
||||||
|
<<: *common-metamigo-variables
|
||||||
|
VIRTUAL_HOST: ${METAMIGO_VIRTUAL_HOST}
|
||||||
|
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
|
||||||
|
depends_on:
|
||||||
|
- metamigo-api
|
||||||
|
|
||||||
signald:
|
signald:
|
||||||
container_name: signald
|
container_name: signald
|
||||||
|
|
|
||||||
11
package-lock.json
generated
11
package-lock.json
generated
|
|
@ -444,12 +444,14 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"apps/metamigo-cli": {
|
"apps/metamigo-cli": {
|
||||||
|
"name": "@digiresilience/metamigo-cli",
|
||||||
"version": "0.2.0",
|
"version": "0.2.0",
|
||||||
"license": "AGPL-3.0-or-later",
|
"license": "AGPL-3.0-or-later",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@digiresilience/metamigo-api": "*",
|
"@digiresilience/metamigo-api": "*",
|
||||||
"@digiresilience/metamigo-config": "*",
|
"@digiresilience/metamigo-config": "*",
|
||||||
"@digiresilience/metamigo-db": "*",
|
"@digiresilience/metamigo-db": "*",
|
||||||
|
"@digiresilience/metamigo-worker": "*",
|
||||||
"@digiresilience/montar": "*",
|
"@digiresilience/montar": "*",
|
||||||
"commander": "^10.0.1",
|
"commander": "^10.0.1",
|
||||||
"graphile-migrate": "^1.4.1",
|
"graphile-migrate": "^1.4.1",
|
||||||
|
|
@ -473,6 +475,7 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"apps/metamigo-frontend": {
|
"apps/metamigo-frontend": {
|
||||||
|
"name": "@digiresilience/metamigo-frontend",
|
||||||
"version": "0.2.0",
|
"version": "0.2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@apollo/client": "^3.7.14",
|
"@apollo/client": "^3.7.14",
|
||||||
|
|
@ -2308,6 +2311,10 @@
|
||||||
"resolved": "packages/metamigo-db",
|
"resolved": "packages/metamigo-db",
|
||||||
"link": true
|
"link": true
|
||||||
},
|
},
|
||||||
|
"node_modules/@digiresilience/metamigo-frontend": {
|
||||||
|
"resolved": "apps/metamigo-frontend",
|
||||||
|
"link": true
|
||||||
|
},
|
||||||
"node_modules/@digiresilience/metamigo-worker": {
|
"node_modules/@digiresilience/metamigo-worker": {
|
||||||
"resolved": "apps/metamigo-worker",
|
"resolved": "apps/metamigo-worker",
|
||||||
"link": true
|
"link": true
|
||||||
|
|
@ -15024,10 +15031,6 @@
|
||||||
"node": ">= 8"
|
"node": ">= 8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/metamigo-frontend": {
|
|
||||||
"resolved": "apps/metamigo-frontend",
|
|
||||||
"link": true
|
|
||||||
},
|
|
||||||
"node_modules/micromark": {
|
"node_modules/micromark": {
|
||||||
"version": "3.1.0",
|
"version": "3.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/micromark/-/micromark-3.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/micromark/-/micromark-3.1.0.tgz",
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue