Fix content and URL in README

This commit is contained in:
khalid@traclabs.com
2026-04-22 23:52:29 -05:00
parent 6aa4288821
commit 86476115df
4 changed files with 36 additions and 2 deletions

View File

@@ -24,10 +24,14 @@ COPY --from=base /app/dist ./dist
COPY --from=base /app/package.json ./ COPY --from=base /app/package.json ./
COPY --from=base /app/site-context.json ./ COPY --from=base /app/site-context.json ./
COPY --from=base /app/content ./content COPY --from=base /app/content ./content
COPY --from=base /app/content ./content-seed
COPY --from=base /app/config ./config COPY --from=base /app/config ./config
COPY --from=base /app/server/entrypoint.sh /app/entrypoint.sh
RUN chmod +x /app/entrypoint.sh
ENV HOST=0.0.0.0 ENV HOST=0.0.0.0
ENV PORT=4321 ENV PORT=4321
EXPOSE 4321 EXPOSE 4321
ENTRYPOINT ["/app/entrypoint.sh"]
CMD ["node", "dist/server/entry.mjs"] CMD ["node", "dist/server/entry.mjs"]

View File

@@ -81,8 +81,8 @@ See `.env.example` for all options.
### Vonage Setup ### Vonage Setup
1. Create a Vonage application in the Dashboard with Messages capability enabled. 1. Create a Vonage application in the Dashboard with Messages capability enabled.
2. Set the inbound message webhook URL to `https://dynamicsites.kadil.dev/webhooks/inbound` (POST). 2. Set the inbound message webhook URL to `https://smsapi.kadil.dev/webhooks/inbound` (POST).
3. Set the status webhook URL to `https://dynamicsites.kadil.dev/webhooks/status` (POST). 3. Set the status webhook URL to `https://smsapi.kadil.dev/webhooks/status` (POST).
4. Under API Settings, ensure Messages API is set as the default for SMS. 4. Under API Settings, ensure Messages API is set as the default for SMS.
5. Copy the generated `private.key` to the project root. 5. Copy the generated `private.key` to the project root.
6. Note your signature secret from Dashboard → API Settings for webhook verification. 6. Note your signature secret from Dashboard → API Settings for webhook verification.

View File

@@ -15,13 +15,24 @@ RUN npm rebuild better-sqlite3
COPY shared ./shared COPY shared ./shared
COPY server ./server COPY server ./server
COPY site-context.json ./ COPY site-context.json ./
# Copy content twice:
# /app/content — the live directory (will be overlaid by a volume mount)
# /app/content-seed — preserved in the image, used to seed empty volumes
COPY content ./content COPY content ./content
COPY content ./content-seed
COPY config ./config COPY config ./config
# Entrypoint seeds the volume on first deploy
COPY server/entrypoint.sh /app/entrypoint.sh
RUN chmod +x /app/entrypoint.sh
WORKDIR /app/server WORKDIR /app/server
ENV NODE_ENV=production ENV NODE_ENV=production
ENV REPO_ROOT=/app ENV REPO_ROOT=/app
EXPOSE 3001 EXPOSE 3001
ENTRYPOINT ["/app/entrypoint.sh"]
CMD ["npx", "tsx", "src/index.ts"] CMD ["npx", "tsx", "src/index.ts"]

19
server/entrypoint.sh Normal file
View File

@@ -0,0 +1,19 @@
#!/bin/sh
set -e
# Seed content into the volume if it's empty (first deploy).
# The Dockerfile copies seed content to /app/content-seed.
# The volume is mounted at /app/content and starts empty.
SEED_DIR="/app/content-seed"
CONTENT_DIR="/app/content"
if [ -d "$SEED_DIR" ] && [ -d "$CONTENT_DIR" ]; then
# Check if sections directory is missing or empty
if [ ! -d "$CONTENT_DIR/sections" ] || [ -z "$(ls -A "$CONTENT_DIR/sections" 2>/dev/null)" ]; then
echo "Seeding content from $SEED_DIR into $CONTENT_DIR..."
cp -rn "$SEED_DIR/"* "$CONTENT_DIR/" 2>/dev/null || true
echo "Content seeded."
fi
fi
exec "$@"