Initial curated Unraid-AppOps-Gateway source from 3bd6f6fee310125bfbb4d4650389a817f498724d
This commit is contained in:
commit
1dfbca08a1
528 files changed
+131054
No files matched your search
+73
@@ -0,0 +1,73 @@
|
||||
FROM node:22-bookworm-slim AS frontend-builder
|
||||
WORKDIR /app
|
||||
COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./
|
||||
RUN corepack enable && pnpm install --frozen-lockfile
|
||||
COPY index.html postcss.config.js tailwind.config.ts tsconfig.json tsconfig.app.json tsconfig.node.json vite.config.ts components.json ./
|
||||
COPY public ./public
|
||||
COPY src ./src
|
||||
ARG VITE_APPOPS_API_MODE=live
|
||||
ARG VITE_APPOPS_API_BASE_URL=
|
||||
ENV VITE_APPOPS_API_MODE=${VITE_APPOPS_API_MODE} \
|
||||
VITE_APPOPS_API_BASE_URL=${VITE_APPOPS_API_BASE_URL}
|
||||
RUN pnpm run build
|
||||
|
||||
FROM python:3.13-slim AS runtime
|
||||
ARG APPOPS_BUILD_ID=development
|
||||
ARG APPOPS_SOURCE_REVISION=development
|
||||
ARG APPOPS_SOURCE_REPOSITORY=local/unraid-appops-gateway
|
||||
ARG APPOPS_SOURCE_TREE=development
|
||||
ARG APPOPS_BUILD_DATE=1970-01-01T00:00:00Z
|
||||
LABEL org.opencontainers.image.title="Unraid AppOps Gateway" \
|
||||
org.opencontainers.image.description="Local-first, policy-gated operations gateway for Unraid and connected services" \
|
||||
org.opencontainers.image.version="${APPOPS_BUILD_ID}" \
|
||||
org.opencontainers.image.revision="${APPOPS_SOURCE_REVISION}" \
|
||||
org.opencontainers.image.source="${APPOPS_SOURCE_REPOSITORY}" \
|
||||
org.opencontainers.image.source-tree="${APPOPS_SOURCE_TREE}" \
|
||||
org.opencontainers.image.created="${APPOPS_BUILD_DATE}" \
|
||||
io.itworx.app.version="1.8.0" \
|
||||
io.itworx.app.operator-auth="http-only-session" \
|
||||
org.opencontainers.image.vendor="AppOps" \
|
||||
net.unraid.docker.managed="dockerman" \
|
||||
net.unraid.docker.webui="http://[IP]:[PORT:1216]/" \
|
||||
net.unraid.docker.icon="/boot/config/plugins/dockerMan/images/unraid-appops-gateway.png"
|
||||
ENV APPOPS_ENV=production \
|
||||
APPOPS_DEPLOYMENT_MODE=private \
|
||||
APPOPS_REQUIRE_OPERATOR_AUTH=false \
|
||||
APPOPS_OPERATOR_TOKEN_FILE=/data/operator-token \
|
||||
APP_OPS_VOICE_TOKEN_FILE=/data/voice-token \
|
||||
APPOPS_BIND_HOST=0.0.0.0 \
|
||||
APPOPS_PORT=1216 \
|
||||
APPOPS_DATA_DIR=/data \
|
||||
APPOPS_DB_PATH=/data/appops.db \
|
||||
APPOPS_STATIC_DIR=/app/dist \
|
||||
APPOPS_LOG_LEVEL=info \
|
||||
APPOPS_DISCOVERY_HISTORY_RUNS=48 \
|
||||
APPOPS_ENABLE_MCP=false \
|
||||
APPOPS_MCP_TOKEN_FILE=/data/mcp-token \
|
||||
APPOPS_MCP_ALLOWED_HOSTS=localhost:*,127.0.0.1:* \
|
||||
APPOPS_ENABLE_N8N=false \
|
||||
APPOPS_N8N_TOKEN_FILE=/data/n8n-token \
|
||||
PYTHONDONTWRITEBYTECODE=1 \
|
||||
PYTHONUNBUFFERED=1
|
||||
WORKDIR /app
|
||||
RUN mkdir -p /etc/appops && printf '%s\n' "$APPOPS_SOURCE_REPOSITORY" "$APPOPS_SOURCE_REVISION" "$APPOPS_SOURCE_TREE" > /etc/appops/source-metadata && chmod 0444 /etc/appops/source-metadata
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y --no-install-recommends gosu \
|
||||
&& rm -rf /var/lib/apt/lists/* \
|
||||
&& addgroup --system appops && adduser --system --ingroup appops appops \
|
||||
&& adduser appops users \
|
||||
&& mkdir -p /data \
|
||||
&& chown -R appops:appops /data /app
|
||||
COPY backend/requirements.txt /tmp/requirements.txt
|
||||
RUN pip install --no-cache-dir -r /tmp/requirements.txt
|
||||
COPY backend/app ./backend/app
|
||||
COPY docs ./docs
|
||||
COPY README.md CHANGELOG.md ./
|
||||
COPY --from=frontend-builder /app/dist ./dist
|
||||
COPY docker/entrypoint.sh /entrypoint.sh
|
||||
RUN sed -i 's/\r$//' /entrypoint.sh && chmod +x /entrypoint.sh
|
||||
EXPOSE 1216
|
||||
VOLUME ["/data"]
|
||||
HEALTHCHECK --interval=30s --timeout=5s --start-period=20s --retries=3 CMD python -c "import urllib.request; urllib.request.urlopen('http://127.0.0.1:1216/api/health', timeout=3).read()"
|
||||
ENTRYPOINT ["/entrypoint.sh"]
|
||||
CMD ["uvicorn", "backend.app.main:app", "--host", "0.0.0.0", "--port", "1216"]
|
||||
Reference in new issue
Block a user