- Sidecar DragonflyDB as Redis replacement - Run pytheus in multiprocessing mode with Redis backend
38 lines
1.7 KiB
Docker
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"] |