GithubHelp home page GithubHelp logo

docker-hy / docker-hy.github.io Goto Github PK

View Code? Open in Web Editor NEW
149.0 11.0 337.0 27.46 MB

DevOps with Docker course by the University of Helsinki, Course material

Home Page: https://devopswithdocker.com/

Dockerfile 0.57% JavaScript 64.66% CSS 34.78%
docker university-course course course-materials docker-compose hacktoberfest course-material

docker-hy.github.io's Introduction

If you have any questions, send an email to [email protected] or send a message through the course Discord group.

Development

Run npm start to start the development mode. The search is disabled during local development.

docker-hy.github.io's People

Contributors

akirataguchi115 avatar annisall avatar cxcorp avatar evelynmitchell avatar heikkihei avatar hoffmanntom avatar jakousa avatar jleh avatar jonas56 avatar luismenasche avatar mai-soup avatar mamelukki avatar mbuet2ner avatar micpob avatar mluukkai avatar mrscalder avatar nikosavola avatar podesta avatar ptrktn avatar qzuw avatar rchou97 avatar rochet2 avatar sahilrajput03 avatar samip5 avatar sasumaki avatar sgorinsky avatar siddhantrao23 avatar sonjaek avatar spydy avatar vilmakoo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

docker-hy.github.io's Issues

Windows EOL

It was probably mentioned SOMEWHERE, but for me this was a great waste of time:
If the sh script is created in Windows, it is by default created with wrong EOL and this needs to be fixed for example in Notepad++ (go to Edit -> EOL Conversion -> Select Linux (LF).

This is not exactly obvious for one who doesn't use Linux very actively and especially because transferring files between operating systems is not an everyday thing.

And because the error message is not very clear (Linux just says that "Not found" when trying to run the script).

Part1: Trying Quay container registry as per instructions give manifest errors

Trying quay.io/nordstrom/hello-world without explicit tag gives mainfest errors

docker pull quay.io/nordstrom/hello-world
Using default tag: latest
Error response from daemon: manifest for quay.io/nordstrom/hello-world:latest not found: manifest unknown: manifest unknown

Resolution: add appropriate tag to the image, for example this works:
docker pull quay.io/nordstrom/hello-world:2.0

Exercise 1.12 new image

Create new image that explains more about ports and where requests are coming from. Previous image is hard to understand.

Copying commands include dollar sign $

Issue Title: Copying Command Code Includes Dollar Sign

Description

When copying command code from the tutorial page, the copied text includes the dollar sign ($). This causes issues when pasting the command into a terminal, as the dollar sign is not part of the command but a prompt indicator.

Steps to Reproduce

  1. Navigate to the tutorial page at https://devopswithdocker.com/part-1/section-2.
  2. Find a code block with a command prompt.
  3. Highlight and copy the command, which looks like:
    $ some-command --with-parameters
  4. Paste the copied text into a terminal.

Expected Behavior

The copied text should exclude the dollar sign, so when pasted into the terminal, it should look like this:

some-command --with-parameters

Problem with exercise 1.9 when using WSL2

I faced a problem in exercise 1.9 when using WSL2.

When using -v to bind mount a file, and the file does not exist on host machine, a directory is created by default. The file has to be created before executing the command
docker -run -v "$(pwd)/text.log:/usr/src/app/text.log" devopsdockeruh/simple-web-service

So, the problem is that even if you remove the directory text.log from host machine after first time, and then create the file text.log on host machine, and then rerun the same command it outputs an error message: docker: Error response from daemon: not a directory.
I overcame the problem with bind mounting the file with a different name.

Steps to reproduce:

  1. Use WSL2 ubuntu
  2. Make sure you do not have a file named text.log in your working directory
  3. Run
    docker run -v "$(pwd)/text.log:/usr/src/app/text.log" devopsdockeruh/simple-web-service
  4. Creates a directory named text.log in your host machine working directory
  5. Remove the directory text.log from your working directory
    rm -r text.log
  6. Create a file text.log
    touch text.log
  7. Rerun command from step two
  8. Outputs an error
    docker: Error response from daemon: not a directory

See: docker/for-win#9823

Build reference to git repository

There's no mention about referencing a git repository for building.

E.g.

version: '3.5'
services:
    ml-front:
        build: https://github.com/docker-hy/ml-kurkkumopo-frontend.git

this way you don't need to clone repositories locally.

Add more information about containers

Part 1 should have more explanation on what containers are and what is inside of them.

Consider adding a new exercise to get more familiar with a container and its contents (or lack of).

Exercise 2.4 from part 2 doesnt work with WSL 2

So far all the exercises worked well but I got stuck on 2.4 using WSL. I managed to make it work on my linux computer though.

The "responses" are never started even when scaling multiple compute containers

Part 3 material mismatch with Part 1 exercises

The text of part 3 states:

Every Dockerfile we’ve used until now has been FROM ubuntu

However, in exercises 1.13 and 1.14 we were told to create Dockerfiles from openjdk and Ruby images instead of ubuntu. The exercises in parts 1 and 2 using the node.js based frontend/backend don't specifically state that Dockerfiles should start from ubuntu images, so I used FROM node which makes exercise 3.1 difficult.

Where to start?

Question: "Should we start at exercises.md or part0.md" -Student

Suggested solution: Add information where to start on homepage.

Timeline for beta testing to README

It would be good to have schedule/timeline for the beta testing. This would give the beta testers idea of the time span and therefore make it possible to schedule their testing so that it would be useful to the course makers.

isolated env example is could be better

Part 1 section 1 example scenario 2 (Isolated environments) is not very good due venv. Some other programming language with less obvious or more difficult native isolation mechanism might be better choice as an example here.

1.7 exercise relies on CMD []

In this exercise create a Dockerfile and use FROM and CMD to create a brand new image that automatically runs the server. Tag the new image as “web-server”

so it's CMD ["server"] but as a beginner I can not know that it's not CMD "server" as previously

Proposal, ex2.8: clarify trailing slash backend_connection_url

I embarrassingly spent too many hours to count troubleshooting why my backend didn't respond to /api/ping through the frontend. Depending on course philosophy, it may be advisable to clarify the information block about the backend in exercise 2.8, specifically:

"It might be nginx configuration problem: Add trailing / to the backend url in the nginx.conf."

I misread this as meaning the location block's prefix pattern /api/ 's trailing slash. Indeed, without much knowledge about how NGINX conf flow works, I didn't make the (obvious in retrospect) connection with _backend_connection_url_. While the learning experience of tinkering with nginx.conf and solidifying my understanding of docker-compose networks was very useful (paralleling what real-world problem-solving is like), this may slow down desired progression rate for the student.

Suggestion: Make the ex2.8 information block more explicit, eg:

Option 1: "Ensure there is a trailing / on the backend url as specified under the location /api/ context in the nginx.conf."

Option 2: "Ensure there is a trailing / on _backend_connection_url_ in the nginx.conf."

Thanks!
~k

1.4 exercise instructions

The exercise 1.4 explicitly tells you to run docker run curler command.
However at least in my solution I had to use additional switches to be able to input anything to the running program.

I am unsure if the exercise can be done without switches with the material so far.
The material has not yet at that point covered the ENTRYPOINT and CMD differences, so using helsinki.fi as the input directly to the docker run command should probably not be expected from the student.

I would suggest adding the required switches to the instructions or a hint about them since the exercise is probably more about Dockerfile. No need to add anything if you feel like people will find out by themselves :)

Backend setup instructions in 1.12 are unclear for me

I have the frontend running in production mode on 5000 and the backend is running on 8000. I press the button and get a cross-orgin request blocked notification in my web console. I see that in the README for the backend it suggest the following fix for this problem "FRONT_URL= npm start". So I have tried following that fix but I think I am interpreting it wrong. I have run the following.

CMD ["FRONT_URL=", "npm", "start"]

CMD ["FRONT_URL=127.0.0.1", "npm", "start"]

ENV FRONT_URL=
CMD [ "npm", "start" ]

ENV FRONT_URL=<127.0.0.1>
CMD [ "npm", "start" ]

docker-compose.yml: `version` is obsolete

Obsolete attribute

When I was doing Part 2 Section 1 (Migrating to Docker Compose) I ran into an issue after running docker compose build with the given docker-compose.yml:

version: '3.8'

services:
  yt-dlp-ubuntu:
    image: <username>/<repositoryname>
    build: .

The first line of the ouput is WARN[0000] <pwd>/docker-compose.yml: `version` is obsolete. I looked it up on google and found a closed issue docker/compose#11628. The resolution is that the attribute version is not needed anymore and also, here's the docs section to back it up.

Submission not required

The "Deployment pipelines" page's exercise 3.3 does not mention any shell files or maybe commands to submit.

Broken Rails Project Dockerfile Example (Part 1, Section 6)

When using the examples given in the text to create a Dockerfile for running the Rails app, the db:migrate command fails due to a missing dependency. If all app files (not just Gemfile and Gemfile.lock) are instead copied into the container prior to running bundle install, the migrate command executes without error, and the container builds and runs.

How to Replicate

Dockerfile from Examples in Text

Create a Dockerfile from the examples in the text for the Rails app from the examples here, as below:

# We need ruby 3.1.0. I found this from Docker Hub
FROM ruby:3.1.0

EXPOSE 3000

WORKDIR /usr/src/app

# Install the correct bundler version
RUN gem install bundler:2.3.3

# Copy the files required for dependencies to be installed
COPY Gemfile* ./

# Install all dependencies
RUN bundle install

# Copy all of the source code
COPY . .

# We pick the production guide mode since we have no intention of developing the software inside the container.
# Run database migrations by following instructions from README
RUN rails db:migrate RAILS_ENV=production

# Precompile assets by following instructions from README
RUN rake assets:precompile

# And finally the command to run the application
CMD ["rails", "s", "-e", "production"]

Build and Run

docker build . -t rails-project && docker run -p 127.0.0.1:3000:3000 rails-project

Actual Result

docker build . -t rails-project && docker run -p 127.0.0.1:3000:3000 rails-project
[+] Building 11.0s (11/12)
 => [internal] load build definition from Dockerfile                                     0.0s
 => => transferring dockerfile: 746B                                                     0.0s
 => [internal] load .dockerignore                                                        0.0s
 => => transferring context: 34B                                                         0.0s
 => [internal] load metadata for docker.io/library/ruby:3.1.0                            0.0s
 => [internal] load build context                                                        0.0s
 => => transferring context: 5.81kB                                                      0.0s
 => [1/8] FROM docker.io/library/ruby:3.1.0                                              0.0s
 => CACHED [2/8] WORKDIR /usr/src/app                                                    0.0s
 => [3/8] COPY Gemfile* ./                                                               0.0s
 => [4/8] RUN gem install bundler:2.3.3                                                  1.0s
 => [5/8] RUN bundle install                                                             8.9s
 => [6/8] COPY . .                                                                       0.0s
 => ERROR [7/8] RUN rails db:migrate RAILS_ENV=production                                1.0s
------
 > [7/8] RUN rails db:migrate RAILS_ENV=production:
#11 0.966 rails aborted!
#11 0.968 LoadError: cannot load such file -- nokogiri
#11 0.968 /usr/local/bundle/gems/bootsnap-1.10.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:15:in `require'
#11 0.968 /usr/local/bundle/gems/bootsnap-1.10.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:15:in `require'
#11 0.968 /usr/local/bundle/gems/loofah-2.13.0/lib/loofah.rb:4:in `<main>'
#11 0.968 /usr/local/bundle/gems/bootsnap-1.10.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
#11 0.968 /usr/local/bundle/gems/bootsnap-1.10.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
#11 0.968 /usr/local/bundle/gems/rails-html-sanitizer-1.4.2/lib/rails-html-sanitizer.rb:2:in `<main>'
#11 0.968 /usr/local/bundle/gems/bootsnap-1.10.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
#11 0.968 /usr/local/bundle/gems/bootsnap-1.10.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
#11 0.968 /usr/local/bundle/gems/actionview-7.0.1/lib/action_view/helpers/sanitize_helper.rb:3:in `<main>'
#11 0.968 /usr/local/bundle/gems/bootsnap-1.10.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
#11 0.968 /usr/local/bundle/gems/bootsnap-1.10.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
#11 0.968 /usr/local/bundle/gems/actionview-7.0.1/lib/action_view/helpers.rb:8:in `<main>'
#11 0.968 /usr/local/bundle/gems/bootsnap-1.10.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
#11 0.968 /usr/local/bundle/gems/bootsnap-1.10.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
#11 0.968 /usr/local/bundle/gems/sprockets-rails-3.4.2/lib/sprockets/rails/context.rb:1:in `<main>'
#11 0.968 /usr/local/bundle/gems/bootsnap-1.10.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
#11 0.968 /usr/local/bundle/gems/bootsnap-1.10.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
#11 0.968 /usr/local/bundle/gems/sprockets-rails-3.4.2/lib/sprockets/railtie.rb:10:in `<main>'
#11 0.968 /usr/local/bundle/gems/bootsnap-1.10.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
#11 0.968 /usr/local/bundle/gems/bootsnap-1.10.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
#11 0.968 /usr/local/bundle/gems/sprockets-rails-3.4.2/lib/sprockets/rails.rb:3:in `<main>'
#11 0.968 /usr/local/bundle/gems/bootsnap-1.10.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
#11 0.968 /usr/local/bundle/gems/bootsnap-1.10.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
#11 0.968 /usr/local/bundle/gems/bundler-2.3.3/lib/bundler/runtime.rb:73:in `rescue in block in require'
#11 0.968 /usr/local/bundle/gems/bundler-2.3.3/lib/bundler/runtime.rb:51:in `block in require'
#11 0.968 /usr/local/bundle/gems/bundler-2.3.3/lib/bundler/runtime.rb:44:in `each'
#11 0.968 /usr/local/bundle/gems/bundler-2.3.3/lib/bundler/runtime.rb:44:in `require'
#11 0.968 /usr/local/bundle/gems/bundler-2.3.3/lib/bundler.rb:176:in `require'
#11 0.968 /usr/src/app/config/application.rb:7:in `<main>'
#11 0.968 /usr/local/bundle/gems/bootsnap-1.10.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
#11 0.968 /usr/local/bundle/gems/bootsnap-1.10.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
#11 0.968 /usr/local/bundle/gems/bootsnap-1.10.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:42:in `require_relative'
#11 0.968 /usr/src/app/Rakefile:4:in `<main>'
#11 0.968 /usr/local/bundle/gems/bootsnap-1.10.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:48:in `load'
#11 0.968 /usr/local/bundle/gems/bootsnap-1.10.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:48:in `load'
#11 0.968 /usr/local/bundle/gems/railties-7.0.1/lib/rails/commands/rake/rake_command.rb:20:in `block in perform'
#11 0.968 /usr/local/bundle/gems/railties-7.0.1/lib/rails/commands/rake/rake_command.rb:18:in `perform'
#11 0.968 /usr/local/bundle/gems/railties-7.0.1/lib/rails/command.rb:51:in `invoke'
#11 0.968 /usr/local/bundle/gems/railties-7.0.1/lib/rails/commands.rb:18:in `<main>'
#11 0.968 /usr/local/bundle/gems/bootsnap-1.10.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
#11 0.968 /usr/local/bundle/gems/bootsnap-1.10.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
#11 0.968 bin/rails:4:in `<main>'
#11 0.968
#11 0.968 Caused by:
#11 0.978 LoadError: cannot load such file -- sprockets-rails
#11 0.978 /usr/local/bundle/gems/bootsnap-1.10.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:15:in `require'
#11 0.978 /usr/local/bundle/gems/bootsnap-1.10.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:15:in `require'
#11 0.978 /usr/local/bundle/gems/bundler-2.3.3/lib/bundler/runtime.rb:60:in `block (2 levels) in require'
#11 0.978 /usr/local/bundle/gems/bundler-2.3.3/lib/bundler/runtime.rb:55:in `each'
#11 0.978 /usr/local/bundle/gems/bundler-2.3.3/lib/bundler/runtime.rb:55:in `block in require'
#11 0.978 /usr/local/bundle/gems/bundler-2.3.3/lib/bundler/runtime.rb:44:in `each'
#11 0.978 /usr/local/bundle/gems/bundler-2.3.3/lib/bundler/runtime.rb:44:in `require'
#11 0.978 /usr/local/bundle/gems/bundler-2.3.3/lib/bundler.rb:176:in `require'
#11 0.978 /usr/src/app/config/application.rb:7:in `<main>'
#11 0.978 /usr/local/bundle/gems/bootsnap-1.10.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
#11 0.978 /usr/local/bundle/gems/bootsnap-1.10.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
#11 0.978 /usr/local/bundle/gems/bootsnap-1.10.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:42:in `require_relative'
#11 0.978 /usr/src/app/Rakefile:4:in `<main>'
#11 0.978 /usr/local/bundle/gems/bootsnap-1.10.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:48:in `load'
#11 0.978 /usr/local/bundle/gems/bootsnap-1.10.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:48:in `load'
#11 0.978 /usr/local/bundle/gems/railties-7.0.1/lib/rails/commands/rake/rake_command.rb:20:in `block in perform'
#11 0.978 /usr/local/bundle/gems/railties-7.0.1/lib/rails/commands/rake/rake_command.rb:18:in `perform'
#11 0.978 /usr/local/bundle/gems/railties-7.0.1/lib/rails/command.rb:51:in `invoke'
#11 0.978 /usr/local/bundle/gems/railties-7.0.1/lib/rails/commands.rb:18:in `<main>'
#11 0.978 /usr/local/bundle/gems/bootsnap-1.10.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
#11 0.978 /usr/local/bundle/gems/bootsnap-1.10.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
#11 0.978 bin/rails:4:in `<main>'
#11 0.978 (See full trace by running task with --trace)
------
executor failed running [/bin/sh -c rails db:migrate RAILS_ENV=production]: exit code: 1

Working Dockerfile

The Dockerfile below first copies all app files into the container (including Gemfile and Gemfile.lock), before installing dependencies, this builds and runs OK.

# We need ruby 3.1.0. I found this from Docker Hub
FROM ruby:3.1.0

EXPOSE 3000

WORKDIR /usr/src/app

# Install the correct bundler version
RUN gem install bundler:2.3.3

# Copy all of the source code
COPY . .
# Copy the files required for dependencies to be installed
# COPY Gemfile* ./

# Install all dependencies
RUN bundle install

# We pick the production guide mode since we have no intention of developing the software inside the container.
# Run database migrations by following instructions from README
RUN rails db:migrate RAILS_ENV=production

# Precompile assets by following instructions from README
RUN rake assets:precompile

# And finally the command to run the application
CMD ["rails", "s", "-e", "production"]

Mismatched link to Dockerfile in part 2

The link below leads to apt-get install ... openssh-client which does not match the description of the link.

The Dockerfile has this line where it declares that a volume should be created.

tutum no longer exists

The third result, tutum/hello-world, is marked as “automated”. This means that the image is automatically built from the source repository. Its Docker Hub page shows its previous “Builds” and a link to the image’s “Source Repository” (in this case, to GitHub) from which Docker Hub builds the image.

tutum has been removed from the internets

youtube-dl

youtube-dl has some outdated links in documentation and has not made releases in a long time. Many distributions seem to have switched to its fork yt-dlp, maybe course material could switch to that too.

Alternatively, nightly version of youtube-dl (ytdl-nightly) has more regular releases.

Part 2 scaling example (possibly) has faulty IP-address

There is a short section after Exercise 2.3 discussing scaling.

In one of the code-blocks there is an example of cURLing some ports. However, the IP-address of these cURLs is 0.0.0.0:<some-port>, while I believe they should be the loopback address referring to the host (127.0.0.1:<some-port>)?

While I do think that the 0.0.0.0 should work, it does not on my Windows 10 device (big surprise). Could this IP-address be changed in the material or is there a reason why the 0.0.0.0-address is superior?

image
A screenshot of the section in discussion.

Lainausmerkit

docker run -it --name looper ubuntu sh -c "while true; do echo 'Input website:'; read website; echo 'Searching..'; sleep 1; echo $website; curl http://$website; done"

sh- komento ei saa muuttujaa asetettua PowerShellissä. Pitää lisätä esceippaus eli takahipsu muuttujalle. Esimerkki yllä. Esimerkissä takahipsu näkyy editointimoodissa muttei lopullisessa esimerkissä.

Esimerkki teetti hiukan työtä :)

Exercise 1.4

Inconsistent indentation in examples

When command examples include also command output, sometimes output is indented by two spaces, sometimes it is not.

It would be nice if this was consistent. As non-indented version is what actually happens (at least on linux?), it might be better for PRs that also touch command examples.

Hint in configuring nginx in exercise 2.5

Maybe add a hint reminding of the importance of the trailing slash in in nginx.conf. Otherwise there might be some occurrences of disbelief & frustration amongst the students unfamiliar with nginx (like I) :).

Part 1: Ruby project example - RUN rake assets:precompile fails

Compilation always fails at the last step at [10/10] RUN rake assets:precompile

I tried several solutions to go about this issue:

To reproduce

  • I followed exactly how Dockerfile is created right before 1.11
  • run docker build . -t ruby-project

Output

image

Any help would be appreciated!

Usage of `docker-compose up` is not explained

The first time docker-compose up is mentioned is without any explanation, and it doesn't seem to be explained later either.

I suggest that the command up should be explained before its first usage. How does up relate to other introduced commands build, run and push?

As more of a side note, Docker Compose seems to be integrated within Docker CLI, so at least this specific usage of docker-compose produces an info output, so it might be soon deprecated?

Example:

% docker-compose up -d
Docker Compose is now in the Docker CLI, try `docker compose up`

Exercise numbering is not consistent

"Do exercise 1.2.1" (just before "Creating your own dockerized project" in part 1 in the material)
Exercises for part 1 go from 1.1 to 1.8.
There's also other similar references to exercises in the start of part 1:
"Do exercises 1.1.1 and 1.1.2"

Part 2 > Volumes in action: sentence is unfinished

There is a text missing when the inspection is done if a volume was created with docker container inspect db_redmine | grep -A 5 Mounts. In this case, below the Mounts snippet, the sentence is unfinished: "An indeed there is one! So despite we did not configure anything the ..." (sudden end). Can this be corrected?

Fix finnish national id format

Currently the Finnish social security number is formatted as xxxxxx-xxxx in completion.md.

However that doesn't include people born in the 2000's who have a 'A' instead of '-'.

Maybe replace that as a more informative format like ddmmyy[-/A]XXXY.

More info if deemed useful: dd is day (01-31), mm month (01-12), yy year, -/A is - for persons born in 1900's and A for 2000's. XXX is individual number (integers) and Z a checksum of range [0-9A-FHJ-NPR-Y].

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.