Skip to content
  • Home
  • How To
  • M0
  • M1
  • Agents
  • M2
  • M3
  • M4
  • M5
  • Module 6 - MLOps
  • Progress
  • Contact
  • Pricing
  • Sign in
  • Future
  1. Module 6M6
  2. ›
    Setup
  3. ›
    Setup
  1. Module 6
  2. ›
  3. Setup

Module 6 Setup (Check This First)

Module 6 leaves (bootcamp) behind. Every earlier module ran its scripts in one shared environment at ~/dev/bootcamp, and this module builds one project, ~/dev/listings-service, with an environment of its own that Lesson 6.1.1 creates from a lock file, the way a team's service is built. What the machine needs is what that project runs on: uv, git with the GitHub key Module 0 set up, curl, and Docker Engine, which Section 6.3 builds and runs containers with. This page checks each one, installs Docker Engine if it is missing, and ends with a checklist that must pass before Lesson 6.1.1.

By the end of this page you will have:

  • A terminal with (bootcamp) deactivated, where uv, git and curl answer
  • Docker Engine running, with docker compose beside it, and your user allowed to run both without sudo
  • Your GitHub SSH key from Lesson 0.3.4 still accepted by GitHub, which Lesson 6.3.4 pushes with
  • The three ports Module 6 serves on free: 8000, 5000 and 5432

If you are starting here

Do every step of Module 0's setup page first, and the SSH key of Lesson 0.3.4, start to finish. Module 6 needs nothing else from Modules 1 to 5 on your machine: its model is Lesson 3.2.3's price pipeline, which Lesson 6.1.1 restates in full, and its data is the course's listings.csv download, which Lesson 6.1.1 tells you where to put. Every library it uses arrives in the lesson that first needs it, pinned in the project's own lock.


Leave (bootcamp) behind

If your prompt starts with (bootcamp), deactivate it now, and keep it deactivated for the whole module:

deactivate

The prompt loses its (bootcamp) prefix and prints nothing else. A project's environment is the .venv folder inside it, and uv run and uv sync find it by themselves. With another environment active, every uv command in the project prints a warning first, and goes on with the project's:

warning: `VIRTUAL_ENV=/home/goku/dev/bootcamp/.venv` does not match the project environment path `.venv` and will be ignored; use `--active` to target the active environment instead

Your (bootcamp) stays exactly as Module 5 left it, and source ~/dev/bootcamp/.venv/bin/activate brings it back whenever you want it.

Then check the three tools the project leans on:

uv --version
git --version
curl --version | head -1
uv 0.13.0 (x86_64-unknown-linux-gnu)
git version 2.53.0
curl 8.18.0 (x86_64-pc-linux-gnu) libcurl/8.18.0 OpenSSL/3.5.5 zlib/1.3.1 brotli/1.2.0 zstd/1.5.7 libidn2/2.3.8 libpsl/0.21.2 libssh2/1.11.1 nghttp2/1.68.0 librtmp/2.3 mit-krb5/1.22.1 OpenLDAP/2.6.10

Each prints its version, and yours can be newer. uv 0.13.0 is the version every Module 6 output came from, so if yours is older, update it with uv self update, which works for the uv Module 0's installer put on your machine.


Install Docker Engine

Docker runs a program inside a container, an isolated copy of a filesystem and a process that behaves the same on every machine, and Section 6.3 builds the service into one. Check whether it is already there:

docker version --format "{{.Server.Version}}"
docker compose version
29.9.0
Docker Compose version v5.6.0

Two lines like these mean Docker Engine and its Compose plugin are installed and running, and you can skip to the next heading. If either command is not found, or the first says it cannot connect to the Docker daemon, install it.

On WSL and Linux, Docker Engine runs inside your Linux system, with nothing installed on the Windows side. Docker's own install script adds its package repository and installs the engine and the Compose plugin:

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker goku
rm get-docker.sh

The script prints the packages it installs and ends with notes on running Docker without root. usermod -aG docker goku adds you to the docker group, so you run docker without sudo, and the group takes effect at your next login: close every terminal, and on WSL also run wsl --shutdown in Windows PowerShell, then open Ubuntu again. WSL starts the Docker service by itself only when systemd is on: cat /etc/wsl.conf shows systemd=true under [boot] when it is, and if those two lines are missing, add them to that file with sudo nano /etc/wsl.conf and run wsl --shutdown again. Docker's install page for Ubuntu and its post-install steps for Linux cover the same steps one by one.

On macOS, Docker Engine needs a Linux system to run in, and Docker Desktop for Mac is that system and the engine in one installer. Install the build for your chip, start Docker Desktop once and accept its terms, which make it free for personal use and education, and the docker command works in every new terminal.

Then prove a container runs:

docker run --rm hello-world

Hello from Docker!
This message shows that your installation appears to be working correctly.

The first run also prints that it is pulling the hello-world image, which it downloads once. --rm deletes the container once it exits.


Check your GitHub key

Lesson 6.3.4 pushes the project to a private repository of your own and lets GitHub run its tests on every push. It pushes over SSH with the key Lesson 0.3.4 made. Run that lesson's check again:

ssh -T git@github.com

It answers with the line Lesson 0.3.4 showed, the one that greets you by your GitHub username and says GitHub does not provide shell access. If it answers Permission denied (publickey) instead, go back to Lesson 0.3.4 and add the key to your GitHub account again.


Keep three ports free

The service answers on port 8000, the MLflow interface on 5000 and PostgreSQL on 5432. Check that nothing already listens on them:

ss -ltn | grep -E ':(8000|5000|5432) '

No output means all three are free. A line names the port in use: stop the program holding it, often a server from an earlier experiment or a PostgreSQL installed on the machine itself, before the lesson that needs that port.

DON'T:

  • DON'T run Module 6's commands with (bootcamp) active. Each uv command warns and ignores it, and a plain python3 then runs the system's Python, which has none of the project's libraries.
  • DON'T skip the new login after usermod. Until you log in again your terminal is not yet in the docker group, and every docker command is refused permission to Docker's socket.
  • DON'T install PostgreSQL, MLflow or FastAPI on the machine itself. Section 6.3 runs PostgreSQL in its own container, and every Python library lives in the project's lock.

Checklist

Every line must pass before Lesson 6.1.1:

  • Your prompt shows no (bootcamp) prefix
  • uv --version prints 0.13.0 or newer
  • git --version and curl --version each print a version
  • docker compose version prints a version
  • docker run --rm hello-world prints Hello from Docker! without sudo
  • ssh -T git@github.com greets you by your GitHub username
  • ss -ltn | grep -E ':(8000|5000|5432) ' prints nothing

Start Lesson 6.1.1 - From Script to Project

Your progress
Current streak
🔥 0
Lessons marked today
0 / 3
Longest streak
0

Sign in

The bootcamp

  • Curriculum
  • How To
  • Pricing
  • Changelog
  • Future

The community

  • Discord
  • Reviews
  • Contact

Follow

  • Instagram
  • X
  • TikTok
  • Reddit

Legal

  • Terms
  • Privacy
  • Refunds

Coming soon on November 16, 2026

The AI/ML Newsletter, free.

SubscribeComing soon on December 1, 2026

Confirm by email, unsubscribe in one click.

Theme