Skip to content

docker compose up results in restart-loop #1

@suaefar

Description

@suaefar

First, I really like the idea and this project.
It's just what I want to connect paperless-ngx with openWEBUI (at least I think so, because I still did not get it running).

I followed the docker compose instructions (details will follow) but when I run docker compose up, I get the following output:

[marc@maxi PaperCortex]$ docker compose up

Executing external compose provider "/usr/lib/docker/cli-plugins/docker-compose". Please see podman-compose(1) for how to disable this message. <<<<

/PaperCortex main*
❯ docker compose up
>>>> Executing external compose provider "/usr/lib/docker/cli-plugins/docker-compose". Please see podman-compose(1) for how to disable this message. <<<<

Sending build context to Docker daemon  180.2kB
[1/2] STEP 1/7: FROM node:22-alpine AS builder
[1/2] STEP 2/7: WORKDIR /app
--> c4d42ccd0f0c
[1/2] STEP 3/7: COPY package.json package-lock.json* ./
--> 7aac478b14d6
[1/2] STEP 4/7: RUN npm ci
npm warn deprecated prebuild-install@7.1.3: No longer maintained. Please contact the author of the relevant native addon; alternatives are available.

added 262 packages, and audited 263 packages in 9s

77 packages are looking for funding
  run `npm fund` for details

6 vulnerabilities (5 moderate, 1 high)

To address all issues, run:
  npm audit fix

Run `npm audit` for details.
npm notice
npm notice New major version of npm available! 10.9.7 -> 11.14.0
npm notice Changelog: https://github.com/npm/cli/releases/tag/v11.14.0
npm notice To update run: npm install -g npm@11.14.0
npm notice
--> 2ed2e83d7a0a
[1/2] STEP 5/7: COPY tsconfig.json ./
--> b4e65d9d7f46
[1/2] STEP 6/7: COPY src/ ./src/
--> 720cf60d720f
[1/2] STEP 7/7: RUN npm run build

> papercortex@0.1.0 build
> tsc

--> 576b89c1d5b2
[2/2] STEP 1/13: FROM node:22-alpine
[2/2] STEP 2/13: WORKDIR /app
--> Using cache c4d42ccd0f0c4bceb532127adab06af8b5d2c767de279d23bbf058c69083b0a9
--> c4d42ccd0f0c
[2/2] STEP 3/13: RUN addgroup -g 1001 -S papercortex &&     adduser -S papercortex -u 1001
--> 72805e94bae7
[2/2] STEP 4/13: COPY package.json package-lock.json* ./
--> 66e4edb3809e
[2/2] STEP 5/13: RUN npm ci --omit=dev && npm cache clean --force
npm warn deprecated prebuild-install@7.1.3: No longer maintained. Please contact the author of the relevant native addon; alternatives are available.

added 129 packages, and audited 130 packages in 5s

38 packages are looking for funding
  run `npm fund` for details

4 moderate severity vulnerabilities

To address all issues, run:
  npm audit fix

Run `npm audit` for details.
npm notice
npm notice New major version of npm available! 10.9.7 -> 11.14.0
npm notice Changelog: https://github.com/npm/cli/releases/tag/v11.14.0
npm notice To update run: npm install -g npm@11.14.0
npm notice
npm warn using --force Recommended protections disabled.
--> d5c7717ac6ec
[2/2] STEP 6/13: COPY --from=builder /app/dist ./dist
--> ab22468c77e1
[2/2] STEP 7/13: RUN mkdir -p /app/data && chown papercortex:papercortex /app/data
--> 2a5200130b3b
[2/2] STEP 8/13: USER papercortex
--> 170bfa9b8bd4
[2/2] STEP 9/13: ENV NODE_ENV=production
--> 2b6451ddeff6
[2/2] STEP 10/13: ENV VECTOR_DB_PATH=/app/data/vectors.db
--> a89f96377bed
[2/2] STEP 11/13: EXPOSE 3100
--> 47946e00a675
[2/2] STEP 12/13: CMD ["node", "dist/mcp-server/index.js"]
--> 9c90523cead2
[2/2] STEP 13/13: LABEL "com.docker.compose.image.builder"="classic"
[2/2] COMMIT docker.io/library/papercortex-papercortex
--> 5a29cb5cd888
Successfully tagged docker.io/library/papercortex-papercortex:latest
5a29cb5cd8884acbcc220781b02438f05c942209363e1085adc36496dc4e9c56
Successfully built 5a29cb5cd888
Successfully tagged papercortex-papercortex
[+] up 2/2
 ✔ Image papercortex-papercortex Built                                                     24.7s
 ✔ Container papercortex         Created                                                    0.0s
Attaching to papercortex
papercortex  | PaperCortex MCP Server running on stdio
papercortex exited with code 0 (restarting)
papercortex exited with code 0 (restarting)
papercortex  | PaperCortex MCP Server running on stdio
papercortex exited with code 0 (restarting)
papercortex  | PaperCortex MCP Server running on stdio
papercortex  | PaperCortex MCP Server running on stdio
papercortex  | PaperCortex MCP Server running on stdio
papercortex exited with code 0 (restarting)
papercortex  | PaperCortex MCP Server running on stdio
papercortex  | PaperCortex MCP Server running on stdio
papercortex  | PaperCortex MCP Server running on stdio
papercortex  | PaperCortex MCP Server running on stdio
papercortex  | PaperCortex MCP Server running on stdio
papercortex  | PaperCortex MCP Server running on stdio
papercortex  | PaperCortex MCP Server running on stdio
papercortex exited with code 0 (restarting)
papercortex exited with code 0 (restarting)
papercortex  | PaperCortex MCP Server running on stdio
papercortex  | PaperCortex MCP Server running on stdio
papercortex  | PaperCortex MCP Server running on stdio
papercortex  | PaperCortex MCP Server running on stdio
papercortex  | PaperCortex MCP Server running on stdio
papercortex exited with code 0 (restarting)
papercortex  | PaperCortex MCP Server running on stdio
papercortex  | PaperCortex MCP Server running on stdio
papercortex  | PaperCortex MCP Server running on stdio
papercortex  | PaperCortex MCP Server running on stdio
papercortex  | PaperCortex MCP Server running on stdio
papercortex  | PaperCortex MCP Server running on stdio
papercortex  | PaperCortex MCP Server running on stdio
papercortex exited with code 0 (restarting)
papercortex  | PaperCortex MCP Server running on stdio
papercortex  | PaperCortex MCP Server running on stdio
papercortex  | PaperCortex MCP Server running on stdio
papercortex  | PaperCortex MCP Server running on stdio
papercortex  | PaperCortex MCP Server running on stdio
papercortex  | PaperCortex MCP Server running on stdio
papercortex  | PaperCortex MCP Server running on stdio

and so on.

I tried this with a clean environment (deleted docker volume and images beforehand).

Differences to a "vanilla" setup that may have an effect:

  • I use podman and podman-compose instead of docker
  • I am running ollama locally and run the container with "network_mode: host" (I also tried with the default network configuration and got the same result)

Here is the diff of my changes to the repo (only edited docker-compose.yml):

~/PaperCortex main*
❯ git diff
diff --git a/docker-compose.yml b/docker-compose.yml
index 81fba7b..74116b7 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -3,34 +3,13 @@ services:
     build: .
     container_name: papercortex
     restart: unless-stopped
-    ports:
-      - "3100:3100"
+    network_mode: host
     volumes:
       - papercortex-data:/app/data
     env_file:
       - .env
     environment:
       - NODE_ENV=production
-    depends_on:
-      - ollama
-
-  ollama:
-    image: ollama/ollama:latest
-    container_name: papercortex-ollama
-    restart: unless-stopped
-    ports:
-      - "11434:11434"
-    volumes:
-      - ollama-models:/root/.ollama
-    # Uncomment for NVIDIA GPU support:
-    # deploy:
-    #   resources:
-    #     reservations:
-    #       devices:
-    #         - driver: nvidia
-    #           count: all
-    #           capabilities: [gpu]
 
 volumes:
   papercortex-data:
-  ollama-models:

I had one observation:
Any changes that I make to the .env seem to have no effect.
I tried to change the log level to "debug" without any difference in the output.
I tried to set MCP_TRANSPORT to "http" but it still says "stdio" in the log

Additional system info:

❯ lsb_release -a
LSB Version:    n/a
Distributor ID: cachyos
Description:    CachyOS
Release:        rolling
Codename:       n/a

~
❯ podman -v
podman version 5.8.2

~
❯ uname -a
Linux maxi 7.0.3-1-cachyos #1 SMP PREEMPT Fri, 01 May 2026 16:30:15 +0000 x86_64 GNU/Linux

~
❯ ollama -v
ollama version is 0.23.0

~
❯ netstat -tln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:8000          0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:40175         0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:5001            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:5355            0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.54:53           0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:33429         0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:11434         0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:57343         0.0.0.0:*               LISTEN     
tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:27036           0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:27060         0.0.0.0:*               LISTEN     
tcp6       0      0 :::5355                 :::*                    LISTEN     
tcp6       0      0 :::22                   :::*                    LISTEN     
tcp6       0      0 :::1716                 :::*                    LISTEN     
tcp6       0      0 ::1:631                 :::*                    LISTEN  

I am also running openWEBUI with podman-compose and "network_mode: host" on that machine and it just works fine.

Only for reference, here is my docker-compose.yml for openWEBUI and docling:
❯ cat docker-compose.yml

services:
  scanner:
    image: quay.io/docling-project/docling-serve
    restart: always
    network_mode: host
    environment:
      # Enable the web UI for testing
      - DOCLING_SERVE_ENABLE_UI=false
      # CRITICAL: Required for picture description with external LLM APIs
      - DOCLING_SERVE_ENABLE_REMOTE_SERVICES=false
      # Maximum wait time for sync requests (seconds) - increase for large documents
      - DOCLING_SERVE_MAX_SYNC_WAIT=600
      # Number of local engine workers
      - DOCLING_SERVE_ENG_LOC_NUM_WORKERS=2
      # CPU thread configuration
      - OMP_NUM_THREADS=12
      - MKL_NUM_THREADS=12
      # IMPORTANT: Keep at 1 to avoid "Task Not Found" errors
      - UVICORN_WORKERS=1
  webserver:
    image: ghcr.io/open-webui/open-webui:main
    restart: always
    depends_on:
      - scanner
    network_mode: host
    volumes:
      - ./data:/app/backend/data

Maybe I am missing something?

I would be willing to debug this, but I need a pointer where to start.
Being able to increase the log level would probably already help.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions