# FastAPI Docker: Fix No Module Named 'app' Error

> Fix the FastAPI Docker error ModuleNotFoundError: No module named app by removing the redundant app. prefix from the CMD entry point

**URL:** https://sentry.io/answers/fastapi-docker-no-module-named-app-error/

---

## The Problem

I have a Dockerfile for my FastAPI project that looks like this:

```
FROM python:3.8
WORKDIR /app

COPY requirements.txt /
RUN pip install --requirement /requirements.txt

COPY ./app /app

EXPOSE 8000
CMD ["uvicorn", "app.main:app", "--host=0.0.0.0" , "--reload" , "--port", "8000"]
```

When I start the container from an image build with this Dockerfile with a command like `docker-compose up -d`, it produces the following Python error:

```
ModuleNotFoundError: No module named 'app'
```

The entry point for my project is a script named `main.py` inside the `app` folder.

How do I fix this error?

## The Solution

The docker container this Dockerfile creates will run the command specified by `CMD` in the directory specified by `WORKDIR`, i.e. `app`. The command gives the project entry point as `app.main:app`, but the first part is unnecessary as we're already in the `app` directory. Therefore, we can fix the error by removing the `app.` part of the command

```
FROM python:3.13-slim
WORKDIR /app

COPY requirements.txt /
RUN pip install --requirement /requirements.txt

COPY ./app /app

EXPOSE 8000
CMD ["uvicorn", "main:app", "--host=0.0.0.0" , "--reload" , "--port", "8000"]
#                ^removed preceding "app."
```

To avoid these kinds of errors, we must ensure that commands are executed in the correct working directory. We can test this before creating our Docker container by running any `CMD` commands in their intended working directory. Note that the working directory can be changed at any point in the Dockerfile by using an additional `WORKDIR` directive.

---

*Source: [sentry.io/answers/fastapi-docker-no-module-named-app-error/](https://sentry.io/answers/fastapi-docker-no-module-named-app-error/)*
