Skipped Files on Upload
When you upload a folder directly, Shoal automatically strips out files and folders that don't belong in a deployed container - things like dependencies, build artefacts, caches, and editor config. This keeps uploads fast and your container clean.
Zip uploads too
The same skip rules apply when uploading a zip file. Matched files and folders are removed before your code is sent to the build pipeline.
Skipped folders
Folders are skipped if any part of their path matches a name in this list. For example, src/__pycache__/ is skipped because the segment __pycache__ matches.
| Folder | Reason |
|---|---|
.git |
Git history - not needed at runtime |
.github |
CI/CD workflow config |
.idea |
JetBrains IDE config |
.vscode |
VS Code editor config |
dist |
Build output - rebuilt by Docker |
build |
Build output - rebuilt by Docker |
| Folder | Reason |
|---|---|
node_modules |
Dependencies - reinstalled by npm install in Docker |
.next |
Next.js build cache |
.nuxt |
Nuxt build cache |
.turbo |
Turborepo cache |
coverage |
Test coverage output |
.nyc_output |
NYC/Istanbul coverage data |
| Folder | Reason |
|---|---|
.venv |
Virtual environment - recreated in Docker |
venv |
Virtual environment - recreated in Docker |
env |
Virtual environment - recreated in Docker |
__pycache__ |
Compiled bytecode cache |
.pytest_cache |
Pytest run cache |
.mypy_cache |
Mypy type-check cache |
.ruff_cache |
Ruff linter cache |
htmlcov |
HTML coverage report output |
| Folder | Reason |
|---|---|
vendor |
Vendored dependencies - reinstalled in Docker |
| Folder | Reason |
|---|---|
target |
Maven build output |
.gradle |
Gradle cache |
out |
IntelliJ build output |
| Folder | Reason |
|---|---|
bin |
Compiled binaries |
obj |
Intermediate build files |
.vs |
Visual Studio local config |
packages |
NuGet package cache |
TestResults |
Test run output |
| Folder | Reason |
|---|---|
.bundle |
Bundler config and cached gems |
tmp |
Rails temp files |
log |
Rails log files |
| Folder | Reason |
|---|---|
_build |
Mix build output |
deps |
Mix dependencies - fetched in Docker |
.elixir_ls |
ElixirLS language server data |
cover |
ExCoveralls coverage output |
Skipped files
Exact filename matches that are always removed:
| File | Reason |
|---|---|
.DS_Store |
macOS folder metadata |
Thumbs.db |
Windows thumbnail cache |
Skipped file types
Files are also skipped based on their extension:
| Extension | Type |
|---|---|
.log |
Log files |
.tmp |
Temporary files |
.pyc |
Python compiled bytecode |
.pyo |
Python optimised bytecode |
.class |
Java compiled class files |
.war |
Java web archive |
.pdb |
.NET debug symbols |
.tsbuildinfo |
TypeScript incremental build info |
.gem |
Ruby gem packages |
Something missing from your deployment?
If a file you expect to be present isn't making it into your container, the skip logic may be the cause. Check this list first - if your file matches a skipped folder name, filename, or extension, rename or restructure it to avoid the match.