Commit dba8b380 authored by Grant's avatar Grant
Browse files

Merge branch '160-socket-redis-adapter' into 'main'

Use ioredis socket.io adapater for multiprocess sockets

Closes #160

See merge request !104
parents 675f6a15 d9cf2fd8
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -12,6 +12,7 @@ publish:
  script:
    - |
      docker build --tag $REGISTRY/$IMAGE_NAME \
      --build-arg VERSION=$CI_COMMIT_SHA \
      --build-arg SENTRY_URL=$SENTRY_URL \
      --build-arg SENTRY_ORG=$SENTRY_ORG \
      --build-arg CLIENT_SENTRY_PROJECT=$CLIENT_SENTRY_PROJECT \
+7 −5
Original line number Diff line number Diff line
FROM node:23-alpine AS base

# to be able to read git hash
RUN apk -U upgrade && apk add --no-cache git openssh
RUN git config --global --add safe.directory /home/node/app

FROM base as dev_dep
RUN mkdir -p /home/node/app/node_modules && chown -R node:node /home/node/app
WORKDIR /home/node/app
@@ -50,6 +46,7 @@ ARG SERVER_SENTRY_PROJECT
ARG SENTRY_URL
ARG SENTRY_ORG
ARG SENTRY_AUTH_TOKEN
ARG VERSION

COPY --from=dev_dep --chown=node:node /home/node/app/ ./
COPY --chown=node:node . .
@@ -87,7 +84,7 @@ RUN if [ -n "$SENTRY_AUTH_TOKEN" ]; then npm -w packages/server run sentry; fi
FROM base as run
WORKDIR /home/node/app
COPY --from=dep /home/node/app/ ./
COPY package*.json docker-start*.sh .git ./
COPY package*.json docker-start*.sh ./

# --- prepare lib ---

@@ -108,6 +105,11 @@ COPY --from=build /home/node/app/packages/admin/dist ./packages/admin/
# --- prepare server ---

RUN mkdir -p packages/server

ARG VERSION
ENV VERSION_PATH=/home/node/app/packages/server/.version
RUN echo "${VERSION}" > ./packages/server/.version

COPY --from=build /home/node/app/packages/server/package.json ./packages/server/
COPY --from=build /home/node/app/packages/server/prisma ./packages/server/prisma
COPY --from=build /home/node/app/packages/server/tool.sh ./packages/server/
+4 −5
Original line number Diff line number Diff line
@@ -25,27 +25,26 @@ services:
    image: sc07/canvas
    build: .
    environment:
      - NODE_TYPE=worker
      - REDIS_HOST=redis://redis
      - DATABASE_URL=postgres://postgres@postgres/canvas
    env_file:
      - .env.local
    depends_on:
      - canvas
    command: ./docker-start-worker.sh
  redis:
    restart: always
    image: redis:7-alpine
    healthcheck:
      test: ['CMD', 'redis-cli', 'ping']
      test: ["CMD", "redis-cli", "ping"]
    volumes:
      - ./data/redis:/data
  postgres:
    restart: always
    image: postgres:14-alpine
    healthcheck:
      test: ['CMD', 'pg_isready', '-U', 'postgres']
      test: ["CMD", "pg_isready", "-U", "postgres"]
    volumes:
      - ./data/postgres:/var/lib/postgresql/data
    environment:
      - 'POSTGRES_HOST_AUTH_METHOD=trust'
      - "POSTGRES_HOST_AUTH_METHOD=trust"

docker-start-worker.sh

deleted100644 → 0
+0 −3
Original line number Diff line number Diff line
#!/bin/sh

./packages/server/tool.sh start_job_worker
 No newline at end of file
+55 −3
Original line number Diff line number Diff line
@@ -8193,6 +8193,43 @@
      "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz",
      "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg=="
    },
    "node_modules/@socket.io/redis-adapter": {
      "version": "8.3.0",
      "resolved": "https://registry.npmjs.org/@socket.io/redis-adapter/-/redis-adapter-8.3.0.tgz",
      "integrity": "sha512-ly0cra+48hDmChxmIpnESKrc94LjRL80TEmZVscuQ/WWkRP81nNj8W8cCGMqbI4L6NCuAaPRSzZF1a9GlAxxnA==",
      "dependencies": {
        "debug": "~4.3.1",
        "notepack.io": "~3.0.1",
        "uid2": "1.0.0"
      },
      "engines": {
        "node": ">=10.0.0"
      },
      "peerDependencies": {
        "socket.io-adapter": "^2.5.4"
      }
    },
    "node_modules/@socket.io/redis-adapter/node_modules/debug": {
      "version": "4.3.7",
      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
      "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
      "dependencies": {
        "ms": "^2.1.3"
      },
      "engines": {
        "node": ">=6.0"
      },
      "peerDependenciesMeta": {
        "supports-color": {
          "optional": true
        }
      }
    },
    "node_modules/@socket.io/redis-adapter/node_modules/ms": {
      "version": "2.1.3",
      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
      "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
    },
    "node_modules/@svgdotjs/svg.draggable.js": {
      "version": "3.0.4",
      "resolved": "https://registry.npmjs.org/@svgdotjs/svg.draggable.js/-/svg.draggable.js-3.0.4.tgz",
@@ -13554,9 +13591,9 @@
      }
    },
    "node_modules/ioredis": {
      "version": "5.5.0",
      "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.5.0.tgz",
      "integrity": "sha512-7CutT89g23FfSa8MDoIFs2GYYa0PaNiW/OrT+nRyjRXHDZd17HmIgy+reOQ/yhh72NznNjGuS8kbCAcA4Ro4mw==",
      "version": "5.6.1",
      "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.6.1.tgz",
      "integrity": "sha512-UxC0Yv1Y4WRJiGQxQkP0hfdL0/5/6YvdfOOClRgJ0qppSarkhneSa6UvkMkms0AkdGimSH3Ikqm+6mkMmX7vGA==",
      "dependencies": {
        "@ioredis/commands": "^1.1.1",
        "cluster-key-slot": "^1.1.0",
@@ -15547,6 +15584,11 @@
        "node": ">=0.10.0"
      }
    },
    "node_modules/notepack.io": {
      "version": "3.0.1",
      "resolved": "https://registry.npmjs.org/notepack.io/-/notepack.io-3.0.1.tgz",
      "integrity": "sha512-TKC/8zH5pXIAMVQio2TvVDTtPRX+DJPHDqjRbxogtFiByHyzKmy96RA0JtCQJ+WouyyL4A10xomQzgbUT+1jCg=="
    },
    "node_modules/npm-run-path": {
      "version": "4.0.1",
      "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
@@ -19051,6 +19093,14 @@
        "node": ">= 0.8"
      }
    },
    "node_modules/uid2": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/uid2/-/uid2-1.0.0.tgz",
      "integrity": "sha512-+I6aJUv63YAcY9n4mQreLUt0d4lvwkkopDNmpomkAUz0fAkEMV9pRWxN0EjhW1YfRhcuyHg2v3mwddCDW1+LFQ==",
      "engines": {
        "node": ">= 4.0.0"
      }
    },
    "node_modules/unbox-primitive": {
      "version": "1.1.0",
      "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz",
@@ -19941,6 +19991,7 @@
        "@prisma/client": "^6.2.1",
        "@sc07-canvas/lib": "^1.0.0",
        "@sentry/node": "^8.47.0",
        "@socket.io/redis-adapter": "^8.3.0",
        "body-parser": "^1.20.2",
        "bullmq": "^5.40.2",
        "connect-redis": "^8.0.1",
@@ -19948,6 +19999,7 @@
        "express": "^4.21.2",
        "express-rate-limit": "^7.5.0",
        "express-session": "^1.18.1",
        "ioredis": "^5.6.1",
        "openid-client": "^6.1.7",
        "prom-client": "^15.1.3",
        "rate-limit-redis": "^4.2.0",
Loading