this post was submitted on 07 Feb 2024
8 points (100.0% liked)

Python

6412 readers
3 users here now

Welcome to the Python community on the programming.dev Lemmy instance!

πŸ“… Events

PastNovember 2023

October 2023

July 2023

August 2023

September 2023

🐍 Python project:
πŸ’“ Python Community:
✨ Python Ecosystem:
🌌 Fediverse
Communities
Projects
Feeds

founded 1 year ago
MODERATORS
 

I deploy a FastAPI service with docker (see my docker-compose.yml and app).

My service directory gets filled with files index.html, index.html.1, index.html.2,... that all contain

They seem to be generated any time the docker healthcheck pings the service.

How can I get rid of these?

PS: I had to put a screenshot, because Lemmy stripped my HTML in the code quote.

top 8 comments
sorted by: hot top controversial new old
[–] [email protected] 5 points 9 months ago

In your docker-compose.yml file, your healthcheck for fastapi uses wget, which saves the file to disk by default. Add --spider to make it behave correctly. Your nginx service has the correct command.

[–] ishanpage 4 points 9 months ago (3 children)

This is a FastAPI feature - Autogenerated documentation using Swagger.

You can turn it off by setting docs_url=None

In your linked main.py:

app = FastAPI(
    title="IslabTweet",
    description=__doc__,
    docs_url="/", # change this to None to disable the docs
    version=VERSION,
)

Hope this helps!

[–] [email protected] 5 points 9 months ago* (last edited 9 months ago) (1 children)

That's weird, I have never noticed any kind of .html files generation when accessing the docs and I have worked with F.Api for some time now, also can't seem to find ang mention of this generation in the docs (that it actually writes files).

Also isn't the default doc path /docs (/redoc)

[–] [email protected] 2 points 9 months ago* (last edited 9 months ago) (1 children)

Ok, that was stupid. Doing healthcheck with wget, does what wget does: it downloads the result. I had to add --spider to stop doing that

  wget -nv --spider http://localhost:8000 || exit 1
[–] [email protected] 1 points 9 months ago* (last edited 9 months ago) (1 children)

usually I would use just curl for hc

[–] [email protected] 1 points 9 months ago

To me it depends on the base image. Some don't have curl, but have wget. I would go with the flow instead of installing it myself. Especially if I can get away with not having to add more layers for an image of my own and/or using the same command for all containers

[–] [email protected] 3 points 9 months ago

The default is /docs

[–] [email protected] 1 points 9 months ago

Well, I do need OpenAPI (Swagger). What I don't need is the generation of thousands of equal static files. Out of all these generated files, index.html would've been enough and I don't need index.html.1, etc.