- Computers get CPUs and memory (default 1 CPU, 2 GB), set at creation and editable; new resources stop, remove and recreate the container, its home dir kept. Every computer container has a docker health check and stays "creating" until it passes; only healthy computers are reached, by hostname, else by their IP on the network (dev outside docker). - Docker is required: the app creates the cobble network on startup and exits without docker. - Production container: deploy/run-app-container.sh mounts .env, the data dir and the docker socket; the database (DB_DIR), media, computers' homes and bun-sqlite's live schema now live on the data volume. - Settings pages for bots, workspaces, computers and users, sharing list components; bots can be deleted; users are created with a password and confirmation, edited and deleted through RBAC-gated APIs. - User types trimmed to super_admin, admin, member, read_only and revoked; admins manage members. UserAvatar shows profile photos from the user row. Co-Authored-By: Claude Opus 5.5 <[email protected]>
30 lines
779 B
Docker
30 lines
779 B
Docker
FROM oven/bun:1.3.14-debian
|
|
|
|
RUN apt-get update \
|
|
&& apt-get install -y --no-install-recommends curl bash nano wget zip unzip \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
ENV NODE_ENV=production
|
|
# Everything that must survive an update lives on the /data volume:
|
|
# the database, media, computers' home directories
|
|
ENV DATA_DIR=/data
|
|
ENV DB_DIR=/data/db
|
|
ENV BUN_FEATURE_FLAG_DISABLE_STREAMING_INSTALL=1
|
|
|
|
WORKDIR /app
|
|
|
|
RUN echo 'alias ll="ls -laF"' >/root/.bashrc
|
|
|
|
COPY package.json bun.lock ./
|
|
RUN bun install --frozen-lockfile
|
|
|
|
COPY . /app/.
|
|
|
|
COPY entrypoint.sh /entrypoint.sh
|
|
RUN chmod +x /entrypoint.sh
|
|
|
|
HEALTHCHECK --interval=30s --timeout=5s --start-period=20s --retries=3 \
|
|
CMD curl -fsS "http://localhost:${PORT:-7227}/api/health" || exit 1
|
|
|
|
ENTRYPOINT ["/entrypoint.sh"]
|