Skip to content
Snippets Groups Projects
Unverified Commit f012f291 authored by Konstantin Tsabolov's avatar Konstantin Tsabolov
Browse files

chore: refactor Docker/Compose setup

parent 5a8e85d1
No related branches found
No related tags found
2 merge requests!9feat(ssi): Establish a trusted connection with yourself,!8Project house-keeping, refactoring and reorganizing
Showing
with 122 additions and 324 deletions
node_modules
.dockerignore
.editorconfig
.eslintignore
.eslintrc.*
.git
.gitattributes
.gitignore
*.md
dist
\ No newline at end of file
.gitlab-ci.yml
.lintstagedrc
.prettierignore
.prettierrc*
**/.env*
**/*.md
**/*.postman_collection.json
**/*.tsbuildinfo
**/coverage
**/deployment
**/dist
**/test
commitlint.config.cjs
Dockerfile
jest.config.*
node_modules
# Base
FROM node:20 AS base
ARG APP_HOME=/home/node/app
ARG SERVICE
WORKDIR ${APP_HOME}
RUN corepack enable
# # libindy build
# FROM node:20-bullseye AS ssi-base
# RUN apt-get update \
# && apt-get install -y --no-install-recommends libsodium-dev libzmq3-dev
# RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain '1.58.0'
# RUN git clone https://github.com/hyperledger/indy-sdk
# RUN cd indy-sdk/libindy && ~/.cargo/bin/cargo build --release
# RUN cd indy-sdk/libindy && mv target/release/libindy.so /usr/lib/libindy.so
# Build
FROM base AS build
ARG APP_HOME=/home/node/app
WORKDIR ${APP_HOME}
COPY package.json pnpm-lock.yaml pnpm-workspace.yaml tsconfig.json ./
COPY apps/${SERVICE}/package.json ./apps/${SERVICE}/
RUN pnpm install --frozen-lockfile
COPY apps/${SERVICE} ./apps/${SERVICE}
RUN pnpm --filter ${SERVICE} build:production
RUN pnpm --filter ${SERVICE} --prod deploy build
# This is a way of keeping the generated prisma client in the build folder
RUN if [ -d ./apps/${SERVICE}/node_modules/\@prisma/client ]; then \
GLOBAL_PRISMA_SETUP=`realpath ./apps/${SERVICE}/node_modules/\@prisma/client` \
GLOBAL_PRISMA_CLIENT=`readlink -f ${GLOBAL_PRISMA_SETUP}/../../.prisma` \
BUILD_PRISMA_SETUP=`realpath ./build/node_modules/\@prisma/client` \
BUILD_PRISMA_CLIENT=`readlink -f ${BUILD_PRISMA_SETUP}/../..` \
sh -c 'cp -r $GLOBAL_PRISMA_CLIENT $BUILD_PRISMA_CLIENT'; \
fi
# Final
FROM node:20 AS final
ARG APP_HOME=/home/node/app
ARG NODE_ENV=production
ENV NODE_ENV=${NODE_ENV}
WORKDIR ${APP_HOME}
ENTRYPOINT ["./docker-entrypoint.sh"]
CMD ["node", "dist/main.js"]
COPY --chown=node:node ./docker-entrypoint.sh ./docker-entrypoint.sh
COPY --from=build --chown=node:node ${APP_HOME}/build/dist ./dist
COPY --from=build --chown=node:node ${APP_HOME}/build/node_modules ./node_modules
COPY --from=build --chown=node:node ${APP_HOME}/build/package.json .
# Cut unnecessary stuff from package.json. Only leave name, version and module type
RUN node -e "\
const { name, version, type } = JSON.parse(fs.readFileSync('./package.json', 'utf-8'));\
fs.writeFileSync('./package.json', JSON.stringify({ name, version, type }, null, 2));\
"
USER node
Dockerfile
Jenkinsfile
coverage
docker-compose.yml
docs
node_modules
yarn-error.log
*.md
!README.md
.circle*
.codecov*
.coveralls*
.dockerignore
.drone*
.editorconfig
# .env
.git*
.huskyrc*
.lintstagedrc*
.npmignore
.prettierrc*
dist
\ No newline at end of file
FROM node:16-slim AS builder
RUN apt-get update
RUN apt-get install -y openssl
WORKDIR /app
RUN npm i -g pnpm
COPY . .
RUN pnpm install
RUN pnpm -F attestation-manager prisma:generate
RUN pnpm -F attestation-manager build
FROM node:16-slim
RUN apt-get update
RUN apt-get install -y openssl
ENV PATH /usr/src/app/node_modules/.bin:$PATH
WORKDIR /usr/src/app
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/start.sh ./start.sh
COPY --from=builder /app/node_modules ./node_modules
COPY --from=builder /app/src/prisma prisma
EXPOSE 3005
RUN chmod +x ./start.sh
CMD ["./start.sh"]
process.env.PORT=3005
process.env.NODE_ENV='development'
\ No newline at end of file
./node_modules/.bin/prisma db push --schema=./prisma/schema.prisma && node dist/src/main.js
Jenkinsfile
coverage
docker-compose.yml
docs
node_modules
yarn-error.log
*.md
!README.md
.circle*
.codecov*
.coveralls*
.drone*
.editorconfig
# .env
.git*
.huskyrc*
.lintstagedrc*
.npmignore
.prettierrc*
dist
FROM node:16-slim AS builder
RUN apt-get update
RUN apt-get install -y openssl
WORKDIR /app
RUN npm i -g pnpm
COPY . .
RUN pnpm install
RUN pnpm -F connection-manager prisma:generate
RUN pnpm -F connection-manager build
FROM node:16-slim
RUN apt-get update
RUN apt-get install -y openssl
ENV PATH /usr/src/app/node_modules/.bin:$PATH
WORKDIR /usr/src/app
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/start.sh ./start.sh
COPY --from=builder /app/node_modules ./node_modules
COPY --from=builder /app/src/prisma prisma
EXPOSE 3003
RUN chmod +x ./start.sh
CMD ["./start.sh"]
\ No newline at end of file
./node_modules/.bin/prisma db push --schema=./prisma/schema.prisma && node dist/src/main.js
Dockerfile
Jenkinsfile
coverage
docker-compose.yml
docs
node_modules
yarn-error.log
*.md
!README.md
.circle*
.codecov*
.coveralls*
.dockerignore
.drone*
.editorconfig
# .env
.git*
.huskyrc*
.lintstagedrc*
.npmignore
.prettierrc*
dist
\ No newline at end of file
FROM node:16-slim AS builder
RUN apt-get update
RUN apt-get install -y openssl
WORKDIR /app
RUN npm i -g pnpm
COPY . .
RUN pnpm install
RUN pnpm -F proof-manager prisma:generate
RUN pnpm -F proof-manager build
FROM node:16-slim
RUN apt-get update
RUN apt-get install -y openssl
ENV PATH /usr/src/app/node_modules/.bin:$PATH
WORKDIR /usr/src/app
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/start.sh ./start.sh
COPY --from=builder /app/node_modules ./node_modules
COPY --from=builder /app/src/prisma prisma
EXPOSE 3007
RUN chmod +x ./start.sh
CMD ["./start.sh"]
process.env.PORT = 3000
process.env.NODE_ENV = 'development'
\ No newline at end of file
./node_modules/.bin/prisma db push --schema=./prisma/schema.prisma && node dist/src/main.js
Dockerfile
Jenkinsfile
coverage
docker-compose.yml
docs
node_modules
yarn-error.log
*.md
!README.md
.circle*
.codecov*
.coveralls*
.dockerignore
.drone*
.editorconfig
# .env
.git*
.huskyrc*
.lintstagedrc*
.npmignore
.prettierrc*
dist
\ No newline at end of file
FROM ubuntu:18.04 as base
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update -y && apt-get install -y \
software-properties-common \
apt-transport-https \
ca-certificates \
curl \
gnupg \
libsodium-dev \
libzmq3-dev \
git \
openssl \
libssl-dev \
pkg-config \
build-essential
RUN curl -fsSL https://deb.nodesource.com/setup_16.x | bash
## install depdencies
RUN apt-get install -y \
nodejs
RUN npm install -g pnpm
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain '1.58.0'
RUN git clone https://github.com/hyperledger/indy-sdk
RUN cd indy-sdk/libindy && ~/.cargo/bin/cargo build --release
RUN cd indy-sdk/libindy && mv target/release/libindy.so /usr/lib/libindy.so
WORKDIR /ssi
COPY . .
RUN pnpm install
RUN pnpm -F ssi-abstraction build
RUN echo "test"
RUN ls -la
FROM base as final
COPY --from=base /ssi/start.sh /apps/ssi-abstraction/start.sh
COPY --from=base /ssi/node_modules/ /apps/ssi-abstraction/node_modules
COPY --from=base /ssi/dist /apps/ssi-abstraction/dist
WORKDIR /apps/ssi-abstraction
EXPOSE 3009
EXPOSE 3010
EXPOSE 4000
RUN chmod +x ./start.sh
CMD ["./start.sh"]
#!/bin/bash
node dist/src/main.js
version: "3.3"
version: "3.9"
services:
conn-m:
container_name: ocm-connection-manager
connection-manager:
build:
context: ../apps/connection-manager
dockerfile: deployment/ci/Dockerfile
context: ..
args:
- SERVICE=connection-manager
init: true
ports:
- "3003:3003"
env_file:
......@@ -15,11 +16,12 @@ services:
- nats
- ssi
att-m:
container_name: ocm-attestation-manager
attestation-manager:
build:
context: ../apps/attestation-manager
dockerfile: deployment/ci/Dockerfile
context: ..
args:
- SERVICE=attestation-manager
init: true
ports:
- "3005:3005"
env_file:
......@@ -29,11 +31,12 @@ services:
- nats
- ssi
proof-m:
container_name: ocm-proof-manager
proof-manager:
build:
context: ../apps/proof-manager
dockerfile: deployment/ci/Dockerfile
context: ..
args:
- SERVICE=proof-manager
init: true
ports:
- "3007:3007"
env_file:
......@@ -43,25 +46,12 @@ services:
- nats
- ssi
principal-m:
container_name: ocm-principal-manager
build:
context: ../apps/principal-manager
dockerfile: deployment/ci/Dockerfile
ports:
- "3008:3008"
env_file:
./env/principal-manager.env
depends_on:
- db
- nats
- ssi
ssi:
container_name: ocm-ssi-abstraction
build:
context: ../apps/ssi-abstraction
dockerfile: deployment/ci/Dockerfile
context: ..
args:
- SERVICE=ssi-abstraction
init: true
ports:
- "3009:3009"
- "3010:3010"
......@@ -73,10 +63,9 @@ services:
- nats
db:
container_name: db
image: postgres:latest
image: postgres:16
volumes:
- ./volumes/postgres-data:/postgres/postgres-data:z
- db-data:/var/lib/postgresql/data
ports:
- 5432:5432
healthcheck:
......@@ -88,12 +77,12 @@ services:
environment:
- POSTGRES_USER=root
- POSTGRES_PASSWORD=password
- POSTGRES_DB=postgres
- POSTGRES_HOST_AUTH_METHOD=trust
nats:
container_name: nats
image: nats
ports:
- '4222:4222' #Nats server port
- '8222:8222' #Nats server Monitering port
volumes:
db-data:
#!/bin/sh
set -e
if [ "$SKIP_DB_PUSH" != true ] && [ -f ./dist/prisma/schema.prisma ]; then
npx --yes --quiet prisma db push --schema=./dist/prisma/schema.prisma
fi
exec "$@"
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment