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"]