Fly is amazing, thank you so much for making cloud deployments so much easier!
However, I have stumbled across a problem i dont know how to solve.
I’m just testing internal api calls between apps in my personal organisation, so things are still super simple.
I have one app acting as a simple api gateway, the uvicorn server is bound to host 0.0.0.0 and this works great for receivng public traffic from the internet.
the second app - let’s call it upstreamA - is another uvicorn server. i had trouble reaching this with my http requests until i read helpful intel here about not binding uvicorn to 0.0.0.0 but instead the equivalent ipv6 of [::].
When i make this change in the uvicorn docker command, the deployment proceeds but fails a critical check and is then rolled back. But during a small window of time, upstreamA IS reachable and returns reposnses. But when the rollback completes (and reverts to previous 0.0.0.0 uvicorn host) the internal requests once again fail.
here is my docker file for upstreamA:
FROM python:3.11 as requirements-stage
RUN pip install poetry
COPY ./pyproject.toml ./poetry.lock* /tmp/
RUN poetry export -f requirements.txt --output requirements.txt --without-hashes
COPY --from=requirements-stage /tmp/requirements.txt /code/requirements.txt
RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt
COPY ./upstreamA /code/upstreamA
CMD [“uvicorn”, “upstreamA.main:api”, “–host”, “::”, “–port”, “8000”]
To confirm, deployments work with host as 0.0.0.0 but fail with “::”. However “::” is the only way i can make upstreamA reachable, as confirmed by the temporary success.
Any help or guidance?