# --------------------------------------- # Base image for node FROM node:20-bookworm-slim as node_base # --------------------------------------- # Base image for redis FROM redis:7-bookworm as redis # --------------------------------------- # Dev environment FROM python:3.11-slim-bookworm as dev # Set ENV WORKDIR /usr/src/app ENV TZ=Etc/UTC ENV NODE_ENV='development' # Install dependencies RUN apt-get update \ && apt-get install -y --no-install-recommends dumb-init # Copy database, source code, and scripts COPY --from=redis /usr/local/bin/redis-server /usr/local/bin/redis-server COPY --from=redis /usr/local/bin/redis-cli /usr/local/bin/redis-cli COPY --from=node_base /usr/local /usr/local COPY scripts/dev.sh /usr/src/app/dev.sh COPY scripts/serge.env /usr/src/app/serge.env COPY vendor/requirements.txt /usr/src/app/requirements.txt COPY ./web/package.json ./web/package-lock.json ./ RUN npm ci \ && chmod 755 /usr/src/app/dev.sh \ && chmod 755 /usr/local/bin/redis-server \ && chmod 755 /usr/local/bin/redis-cli \ && mkdir -p /etc/redis \ && mkdir -p /data/db \ && mkdir -p /usr/src/app/weights \ && echo "appendonly yes" >> /etc/redis/redis.conf \ && echo "dir /data/db/" >> /etc/redis/redis.conf EXPOSE 8008 EXPOSE 9124 ENTRYPOINT ["/usr/bin/dumb-init", "--"] CMD ["/bin/bash", "-c", "/usr/src/app/dev.sh"]