Files
T31M 25edcd8ac4 feat: Add FastAPI s6 sidecar PoC
- Sidecar DragonflyDB as Redis replacement
- Run pytheus in multiprocessing mode with Redis backend
2023-08-06 21:02:23 +02:00

38 lines
1.7 KiB
Docker

FROM public.ecr.aws/docker/library/python:3.11-slim-bookworm
ARG S6_OVERLAY_VERSION=3.1.5.0
RUN apt-get update && apt-get upgrade -y && apt-get install -y xz-utils libssl-dev libxml2-dev && rm -rf /var/cache/apt/archives /var/lib/apt/lists
# Add s6-overlay
ADD https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-noarch.tar.xz /tmp
RUN tar -C / -Jxpf /tmp/s6-overlay-noarch.tar.xz
ADD https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-x86_64.tar.xz /tmp
RUN tar -C / -Jxpf /tmp/s6-overlay-x86_64.tar.xz
# Add FastAPI s6 config
RUN mkdir -p /etc/s6-overlay/s6-rc.d/fastapi/dependencies.d/
RUN echo "longrun" >> /etc/s6-overlay/s6-rc.d/fastapi/type
COPY s6/run_fastapi /etc/s6-overlay/s6-rc.d/fastapi/run
RUN touch /etc/s6-overlay/s6-rc.d/user/contents.d/fastapi && touch /etc/s6-overlay/s6-rc.d/fastapi/dependencies.d/base && touch /etc/s6-overlay/s6-rc.d/fastapi/dependencies.d/dragonfly
# Install DragonflyDB
ADD https://github.com/dragonflydb/dragonfly/releases/download/v1.7.1/dragonfly_amd64.deb /tmp
RUN dpkg -i /tmp/dragonfly_amd64.deb
# Cleanup /tmp
RUN rm -rf /tmp/*
# Add DragonflyDB s6 config
RUN mkdir -p /etc/s6-overlay/s6-rc.d/dragonfly/dependencies.d/
RUN echo "longrun" >> /etc/s6-overlay/s6-rc.d/dragonfly/type
COPY s6/run_dragonfly /etc/s6-overlay/s6-rc.d/dragonfly/run
RUN touch /etc/s6-overlay/s6-rc.d/user/contents.d/dragonfly && touch /etc/s6-overlay/s6-rc.d/dragonfly/dependencies.d/base
# Add FastAPI code + dependencies
WORKDIR /code
COPY ./requirements.txt /code/requirements.txt
RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt
COPY ./app /code/app
# Execute s6 overlay entrypoint
ENTRYPOINT ["/init"]