Docker Swarm Mode has been in severely declining usage and maintenance for years now. Meanwhile, Docker Compose has had quite a lot of changes (notably deprecating the `version:` field required by Swarm / forward compatibility). As a result, it no longer makes a ton of sense for us to prefer/suggest Swarm usages.
This changes all references to be `compose.yaml` (the upstream-preferred canonical filename: 9a9cc5d9c3/cli/options.go (L384-L385)) directly, leaving "swarm compatibility" as an exercise for the minority of readers who might still need/want it.
Unfortunately, this also means we need to remove all the play-with-docker links (since it only supports stack deploy via URL arguments, not compose), but my experience with that service is that it hasn't been terribly performant for a while, so I don't think this is a huge loss.
(There were also a few trailing references to the long-since-defunct Docker Machine project which have also been cleaned up.)
I used this in class. My students were missing the build command, because it is a bit hidden in the text. I suggest making it more obvious that the image needs to be built before running it.
Currently, instructions to copy the default configuration from the
nginx container to the host uses three commands. This can be done more
efficiently with one command (assuming the presence of "cat" in the
container which should be a safe).
Update the instructions to use the single command.
The code block contains the paths that should be mapped,
`/var/cache/nginx` and `/var/run` for readonly cases.
However, the description immediately above the code block
also listed two paths. The first, `/var/cache`, would require
additional dirs to already exist within the dir. For example,
the application will fail to start if the host didn't create
an `nginx` dir prior to starting the container.
This change updates the path in the description so it matches
the path mapped in the code block and no dirs need to exist
before starting the container.
The templates script that uses `envsubst` is not available in the current stable version (1.18).
Hope this information saves others some debugging time.