networks: proxy: external: true services: docusaurus: container_name: ${CONTAINER_NAME} build: context: ./site restart: always environment: SITE_URL: ${SITE_URL} NODE_ENV: development volumes: # The markdown source content — edit files in here and the running dev # server picks them up automatically: no rebuild, no restart. Organised # as one folder per plugin. - ./docs:/app/docs # Runs the Docusaurus dev server, which watches ./docs and recompiles on # every change, so editing a doc updates the live site with no container # restart or rebuild. `--poll` makes file-change detection reliable across # the bind mount. For a truly live browser refresh (HMR) enable # "Websockets Support" on this host in Nginx Proxy Manager; without it an # already-open tab still updates on the next manual refresh. command: sh -c "npm run start -- --host 0.0.0.0 --port ${PORT} --no-open --poll 1000" networks: - proxy # No host port published — Nginx Proxy Manager reaches this container # directly by its container name on the shared "proxy" network. Point # NPM's proxy host at http://${CONTAINER_NAME}:${PORT}. # ports: # - "3000:3000"