Explorar el Código

chore: add local prod script

Nicolas Meienberger hace 1 año
padre
commit
84a269336f
Se han modificado 4 ficheros con 113 adiciones y 4 borrados
  1. 2 1
      docker-compose.dev.yml
  2. 106 0
      docker-compose.prod.yml
  3. 1 1
      package.json
  4. 4 2
      vitest.workspace.ts

+ 2 - 1
docker-compose.dev.yml

@@ -46,7 +46,7 @@ services:
     ports:
       - 6379:6379
     volumes:
-      - ./data/redis:/data
+      - redisdata:/data
     healthcheck:
       test: ['CMD', 'redis-cli', 'ping']
       interval: 5s
@@ -107,3 +107,4 @@ networks:
 
 volumes:
   pgdata:
+  redisdata:

+ 106 - 0
docker-compose.prod.yml

@@ -0,0 +1,106 @@
+version: '3.7'
+
+services:
+  tipi-reverse-proxy:
+    container_name: tipi-reverse-proxy
+    image: traefik:v2.8
+    restart: on-failure
+    ports:
+      - 80:80
+      - 443:443
+      - 8080:8080
+    command: --providers.docker
+    volumes:
+      - /var/run/docker.sock:/var/run/docker.sock:ro
+      - ${PWD}/traefik:/root/.config
+      - ${PWD}/traefik/shared:/shared
+    networks:
+      - tipi_main_network
+
+  tipi-db:
+    container_name: tipi-db
+    image: postgres:14
+    restart: unless-stopped
+    stop_grace_period: 1m
+    volumes:
+      - pgdata:/var/lib/postgresql/data
+    ports:
+      - 5432:5432
+    environment:
+      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
+      POSTGRES_USER: tipi
+      POSTGRES_DB: tipi
+    healthcheck:
+      test: ['CMD-SHELL', 'pg_isready -d tipi -U tipi']
+      interval: 5s
+      timeout: 10s
+      retries: 120
+    networks:
+      - tipi_main_network
+
+  tipi-redis:
+    container_name: tipi-redis
+    image: redis:7.2.0
+    restart: unless-stopped
+    command: redis-server --requirepass ${REDIS_PASSWORD}
+    ports:
+      - 6379:6379
+    volumes:
+      - redisdata:/data
+    healthcheck:
+      test: ['CMD', 'redis-cli', 'ping']
+      interval: 5s
+      timeout: 10s
+      retries: 120
+    networks:
+      - tipi_main_network
+
+  tipi-dashboard:
+    build:
+      context: .
+      dockerfile: Dockerfile
+    container_name: tipi-dashboard
+    depends_on:
+      tipi-db:
+        condition: service_healthy
+      tipi-redis:
+        condition: service_healthy
+    env_file:
+      - .env
+    environment:
+      NODE_ENV: development
+    networks:
+      - tipi_main_network
+    ports:
+      - 3000:3000
+    volumes:
+      - ${PWD}/.env:/runtipi/.env
+      - ${PWD}/state:/runtipi/state
+      - ${PWD}/repos:/runtipi/repos:ro
+      - ${PWD}/apps:/runtipi/apps
+      - ${PWD}/logs:/app/logs
+      - ${PWD}/traefik:/runtipi/traefik
+      - ${STORAGE_PATH}:/app/storage
+    labels:
+      traefik.enable: true
+      traefik.http.services.dashboard.loadbalancer.server.port: 3000
+      traefik.http.middlewares.redirect-to-https.redirectscheme.scheme: https
+      # Local domain
+      traefik.http.routers.dashboard-local-insecure.rule: Host(`${LOCAL_DOMAIN}`)
+      traefik.http.routers.dashboard-local-insecure.entrypoints: web
+      traefik.http.routers.dashboard-local-insecure.service: dashboard
+      traefik.http.routers.dashboard-local-insecure.middlewares: redirect-to-https
+      # secure
+      traefik.http.routers.dashboard-local.rule: Host(`${LOCAL_DOMAIN}`)
+      traefik.http.routers.dashboard-local.entrypoints: websecure
+      traefik.http.routers.dashboard-local.tls: true
+      traefik.http.routers.dashboard-local.service: dashboard
+
+networks:
+  tipi_main_network:
+    driver: bridge
+    name: runtipi_tipi_main_network
+
+volumes:
+  pgdata:
+  redisdata:

+ 1 - 1
package.json

@@ -21,7 +21,7 @@
     "start:dev-container": "./.devcontainer/filewatcher.sh && npm run start:dev",
     "start:rc": "docker compose -f docker-compose.rc.yml --env-file .env up --build",
     "start:dev": "npm run prepare && docker compose -f docker-compose.dev.yml up --build",
-    "start:e2e": "./scripts/start-e2e.sh latest",
+    "start:prod": "npm run prepare && docker compose -f docker-compose.prod.yml up --build",
     "start:pg": "docker run --name test-db -p 5433:5432 -d --rm -e POSTGRES_PASSWORD=postgres postgres:14",
     "version": "echo $npm_package_version",
     "release:rc": "./scripts/deploy/release-rc.sh",

+ 4 - 2
vitest.workspace.ts

@@ -1,9 +1,11 @@
-import { defineWorkspace } from 'vitest/config';
+import { defineWorkspace, UserWorkspaceConfig } from 'vitest/config';
 import tsconfigPaths from 'vite-tsconfig-paths';
 
+type Plugin = Exclude<UserWorkspaceConfig['plugins'], undefined>[number];
+
 export default defineWorkspace([
   {
-    plugins: [tsconfigPaths()],
+    plugins: [tsconfigPaths() as Plugin],
     test: {
       globals: true,
       name: 'server',