feat: Add FastAPI s6 sidecar PoC
- Sidecar DragonflyDB as Redis replacement - Run pytheus in multiprocessing mode with Redis backend
This commit is contained in:
38
Dockerfile
Normal file
38
Dockerfile
Normal file
@ -0,0 +1,38 @@
|
||||
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"]
|
||||
Reference in New Issue
Block a user