---
format:
    revealjs:
        theme: simple
        chalkboard: true
        auto-stretch: false
---

## Container Tools

Keith VanderLinden<br>
Calvin University

## Demos

- Virtualization
    - Dev Containers
    - Docker
- GitHub Codespaces

::: {.notes}
- *Goal*: Demo the transition from script/local (back out) to script/cloud:
    - Referring to the infrastructure deployment diagram as appropriate.
    - Re-using the important terms throughout.
    - Configuring the dev-container appropriately.
    - Using the SLO project as an example.
    - We can run the script in VSCode or the WSL2 CLI.
1. Show `hello.py` running locally in CLI/Venv.
    - Show where we left off on the diagram.
    - Walk through the:
        - Docker container specified `.devcontainer/Dockerfile`.
            - There's no Python Venv (recall this discussion earlier).
            - I use pip here; I couldn't get Conda-based pre-builds to work for Tensorflow.
        - Additional VSCode configuration in `.devcontainer/devcontainer.json`.
            - This has the Dockerfile and some VSCode extensions3
2. Show VSCode running the local dev-container.
    - Show the transition from WSL2 to Docker on the diagram.
    - Show the Docker Desktop with the data562-slo container (and others), all exited.
    - Connect in VSCode and show the container running in:
        - VSCode.
        - Docker Desktop.
    - Run `hello.py`.
    - Walk through the new container environment.
        - Show the Linux file structure.
        - Show the container user.
        - Show Python, running without a Venv (because containers are isolated).
    - Rebuild the dev-container (between videos).
3. Show the dev-container running in GitHub Codespaces.
    - We can run it from:
        - GitHub Codespaces using a web-based VSCode.
        - local VSCode.
    - Show the limits of the free tier for personal codespaces.
- We've come full circle: cloud-local-cloud, running hello-world in countless ways - show diagram - but now:
    - We're in control of what we're deploying on the cloud (IaaS & PaaS).
    - We've got a reproducible, isolated development environment.
    - We'll ultimately build our own cloud application (SaaS).
:::

## Snapshot

*See the live demo.*

![](images/container-demo.png)

::: {.notes}
Link a snapshot of the final state of the demo here, with the GitHub-cloud-based VSCode editor running `hello.py` from the GitHub repo.
:::
