Inception

by bhagenlo

written for version 1.3

Image originally from xkcd
Welcome to Inception.

This project is somewhat special. Its underlying idea is great. Docker is an incredibly useful technology, and the idea of containerization revolutionized the software world over the last decade.

However, I think that this project is were the 42 assumption to learning (being If you do everything only from the ground up, you learn it in the best way.) finally breaks down.

I think that for using Docker properly, one first needs to understand the larger context it exists in. Let's supply that context before we start.

#Prerequisites

Okay. What is Docker, now?

And in which context does it exist?

To sum it up:

  • Docker is a tool to create, build and run containers.
  • Containers are boxes/capsules you can run your software in, and for which you can specify how they're allowed to interact with the outside world.
  • Those containers are useful in two places.

    1. To develop software reliably (removing the 'works on my machine' problem)
    2. To deploy software in an automated (and reliable way) - instead of setting up a VM by hand, you can just deploy your container image.
  • Other tools seem to be doing similar things.

After you've read all that, let's first use Docker for something, and then start Inception from there.

In case you haven't done that before, get yourself a very simple Linux container, and test your CPP00-04 for CPP98-conformity.

For example, you can try this one: https://github.com/pauldev20/minilinux


Draft in Progress


#During

  • Read through carefully what the start.sh of minilinux does.
  • Then, try to write a docker compose file for minilinux.

After you've done that, go take some time to read documentation on the various services you need to set up.

#Cleaning Up

Well, make sure it works.

In addition to that:

  • Know how to access the Database inside the container.

#Aftercare

Time to actually use containers for something!

Make a project of yours more accessible by automating a development setup. After Inception, I added a docker-compose.yaml file to the repo for this website, so that people can contribute to it way more easily.

You've just made a big step towards being a professional software developer. Nice!

And may your deployments always work reliably.

#Pointers

← CPP00-04

Found something to improve? Edit this page on Github!

webserv →