> ## Documentation Index
> Fetch the complete documentation index at: https://getfloo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Build context

> Which files reach a floo build, and how to keep large or sensitive files out of it.

There is no `.flooignore` file. floo never uploads your working directory: every
deploy, whether a `git push` or `floo redeploy`, downloads the commit from your
connected GitHub repository and builds from that. Two standard files decide what
the build sees: `.gitignore` decides what is in the commit, and `.dockerignore`
decides what the Docker build context includes.

## How it works

1. floo downloads the commit's source from GitHub. Anything excluded by
   `.gitignore` is not in the repository, so it never reaches the build server.
2. Each service builds with its own `path` as the Docker build context, and its
   `Dockerfile` must sit inside that directory.
3. Docker applies the `.dockerignore` next to that `Dockerfile` before sending
   the context to the builder.

Files you do not commit cannot be built. Files you commit but list in
`.dockerignore` are downloaded but excluded from the image build.

## Keep large and sensitive files out of git

Add them to `.gitignore`:

```
# Secrets (never commit these)
.env
.env.*

# Large data files
*.csv
*.sqlite
data/

# Build artifacts
node_modules/
__pycache__/
.venv/
target/
dist/
build/

# Media
*.mp4
*.mov
uploads/

# IDE
.idea/
.vscode/
.DS_Store
```

Secrets belong in `floo env set`, not in the repository. See
[Environment variables](/docs/guides/environment-variables).

## Trim the Docker build context

`.dockerignore` is the standard Docker mechanism and works unchanged on floo:

```
node_modules
.git
.env
*.md
```

Put it beside the service's `Dockerfile`. A smaller context uploads faster and
keeps `COPY . .` from dragging local artifacts into the image.

## Checking the build

The deploy output shows the build progress:

```bash theme={null}
floo redeploy
```

If builds are slow, check that generated artifacts and large files are excluded
through `.gitignore` or `.dockerignore`, and use a multi-stage build so only the
built output lands in the final image. See
[Dockerfiles](/docs/guides/dockerfiles) and the
[container contract](/docs/reference/container-contract).
