plasmic Docker & Self-Hosted Deployment

GitHub

Visual builder for React. Build apps, websites, and content. Integrate with your codebase.

7,124 stars TypeScript TypeScript 9 files ยท ~12,548 tokens #builder#cms#design#design-systems#design-tools#drag-drop#frontend#gatsby
RAW Compose
1. Pull Image (DOCKERHUB) docker pull library/postgres
2. Docker Run (1-Click Launch) docker run -d --name plasmic -p 5432:5432 --restart always postgres:15
3. Podman Run podman run -d --name plasmic -p 5432:5432 --restart always postgres:15
4. Skopeo Inspect (Zero-Pull Manifest) skopeo inspect docker://docker.io/library/postgres:15
5. ORAS Pull (OCI Artifact) oras pull postgres:15
6. Compose Deployment docker compose up -d
docker-compose.yml
Download .yml
services:
  # PostgreSQL database
  plasmic-db:
    image: postgres:15
    restart: always
    environment:
      - POSTGRES_PASSWORD=SEKRET
      - POSTGRES_USER=wab
      - POSTGRES_DB=wab
    ports:
      - "5432:5432"
    volumes:
      - postgres_data:/var/lib/postgresql/data
      - ./platform/wab/tools/docker-dev/db-setup.bash:/docker-entrypoint-initdb.d/db-setup.sh
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U wab"]
      interval: 5s
      timeout: 10s
      retries: 5

  # Plasmic WAB (Web App Builder)
  plasmic-wab:
    build:
      context: .
      dockerfile: ./platform/wab/tools/docker-dev/Dockerfile.dev.aio
    command: # Override the default dockerfile startup command here for debugging purpose
      - |
        jq '(.host = "plasmic-db") | (.password //= "SEKRET")' ormconfig.json > tmp.json && mv tmp.json ormconfig.json && \
        pnpm typeorm migration:run && \
        pnpm seed && \
        cd /plasmic && \
        pnpm dev
    volumes:
      # 1. Mount your local source code into the container
      - .:/plasmic
      # 2. Use named volumes to preserve built container files from being overwritten by unbuilt local code
      # --- Node Modules (Existing) ---
      - plasmic_node_modules:/plasmic/node_modules
      # Has the pnpm store that platform/* node_modules symlink into.
      - plasmic_platform_node_modules:/plasmic/platform/node_modules
      - plasmic_wab_node_modules:/plasmic/platform/wab/node_modules
      - plasmic_sub_node_modules:/plasmic/platform/sub/node_modules
      - plasmic_canvas_node_modules:/plasmic/platform/canvas-packages/node_modules
      - plasmic_live_frame_node_modules:/plasmic/platform/live-frame/node_modules
      - plasmic_react_web_bundle_node_modules:/plasmic/platform/react-web-bundle/node_modules
      - plasmic_loader_bundle_env_node_modules:/plasmic/platform/loader-bundle-env/node_modules
      - plasmic_loader_html_hydrate_node_modules:/plasmic/platform/loader-html-hydrate/node_modules

      # --- Generated files ---
      - plasmic_public:/plasmic/platform/wab/public
      - plasmic_wab_client:/plasmic/platform/wab/src/wab/client
      - plasmic_wab_gen:/plasmic/platform/wab/src/wab/gen
      - plasmic_wab_shared_model:/plasmic/platform/wab/src/wab/shared/model
      - plasmic_generated_styles:/plasmic/platform/wab/src/wab/styles

      # --- Build Caches ---
      - plasmic_playwright_cache:/home/plasmic/.cache/ms-playwright
    ports:
      - "3003:3003"
      - "3004:3004"
      - "3005:3005"
      - "9229:9229"
    depends_on:
      plasmic-db:
        condition: service_healthy
    environment:
      - DATABASE_URI=postgres://wab:SEKRET@plasmic-db:5432/wab
      - WAB_DBNAME=plasmic-db
      - WAB_DBPASSWORD=SEKRET
      - NODE_ENV=development
      - POSTGRES_USER=wab
      # This environment variable makes file watching more reliable.
      - CHOKIDAR_USEPOLLING=true
    tty: true
    stdin_open: true

volumes:
  postgres_data:
  plasmic_node_modules:
  plasmic_platform_node_modules:
  plasmic_wab_node_modules:
  plasmic_sub_node_modules:
  plasmic_canvas_node_modules:
  plasmic_live_frame_node_modules:
  plasmic_react_web_bundle_node_modules:
  plasmic_loader_bundle_env_node_modules:
  plasmic_loader_html_hydrate_node_modules:
  plasmic_playwright_cache:
  plasmic_generated_styles:
  plasmic_public:
  plasmic_wab_client:
  plasmic_wab_gen:
  plasmic_wab_shared_model: