├── .gitmodules
├── 00_how_to_docker
├── 10
├── 11
├── 12
├── 13
├── 14
├── 15
├── 16
├── 17
├── 18
├── 19
├── 20
├── 21
├── 22
├── 23
├── 24
├── 25
├── 26
├── 27
├── 28
├── 29
├── 30
├── 31
├── 32
├── 33
├── 34
├── 01
├── 02
├── 03
├── 04
├── 05
├── 06
├── 07
├── 08
└── 09
├── 01_dockerfiles
├── ex00
│ └── Dockerfile
├── ex01
│ └── Dockerfile
├── ex02
│ ├── Dockerfile
│ └── ft-rails
│ │ └── Dockerfile
└── ex03
│ └── Dockerfile
├── 02_bonus
├── 00
│ └── Dockerfile
├── 01
│ └── Dockerfile
├── 02
│ └── Dockerfile
├── 03
│ └── Dockerfile
└── 04
│ └── Dockerfile
├── README.md
└── docker.en.pdf
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "01_dockerfiles/ex02/app"]
2 | path = 01_dockerfiles/ex02/app
3 | url = https://bitbucket.org/railstutorial/sample_app_4th_ed.git
4 |
--------------------------------------------------------------------------------
/00_how_to_docker/01:
--------------------------------------------------------------------------------
1 | docker-machine create --driver virtualbox Char
--------------------------------------------------------------------------------
/00_how_to_docker/02:
--------------------------------------------------------------------------------
1 | docker-machine ip Char
--------------------------------------------------------------------------------
/00_how_to_docker/03:
--------------------------------------------------------------------------------
1 | eval $(docker-machine env Char)
--------------------------------------------------------------------------------
/00_how_to_docker/04:
--------------------------------------------------------------------------------
1 | docker pull hello-world
--------------------------------------------------------------------------------
/00_how_to_docker/05:
--------------------------------------------------------------------------------
1 | docker run hello-world
--------------------------------------------------------------------------------
/00_how_to_docker/06:
--------------------------------------------------------------------------------
1 | docker run -d -p 5000:80 --name overlord --restart=always nginx
--------------------------------------------------------------------------------
/00_how_to_docker/07:
--------------------------------------------------------------------------------
1 | docker inspect -f '{{.NetworkSettings.IPAddress}}' overlord
--------------------------------------------------------------------------------
/00_how_to_docker/08:
--------------------------------------------------------------------------------
1 | docker run -it --rm alpine /bin/sh
--------------------------------------------------------------------------------
/00_how_to_docker/09:
--------------------------------------------------------------------------------
1 | apt-get update
2 | apt-get upgrade -y
3 | apt-get install -y build-essential git
--------------------------------------------------------------------------------
/00_how_to_docker/10:
--------------------------------------------------------------------------------
1 | docker volume create --name hatchery
--------------------------------------------------------------------------------
/00_how_to_docker/11:
--------------------------------------------------------------------------------
1 | docker volume ls
--------------------------------------------------------------------------------
/00_how_to_docker/12:
--------------------------------------------------------------------------------
1 | docker run -d --name spawning-pool --restart=on-failure:10 -e MYSQL_ROOT_PASSWORD=Kerrigan -e MYSQL_DATABASE=zerglings -v hatchery:/var/lib/mysql mysql --default-authentication-plugin=mysql_native_password
--------------------------------------------------------------------------------
/00_how_to_docker/13:
--------------------------------------------------------------------------------
1 | docker inspect -f '{{.Config.Env}}' spawning-pool
--------------------------------------------------------------------------------
/00_how_to_docker/14:
--------------------------------------------------------------------------------
1 | docker run -d --name lair -p 8080:80 --link spawning-pool:mysql wordpress
--------------------------------------------------------------------------------
/00_how_to_docker/15:
--------------------------------------------------------------------------------
1 | docker run --name roach-warden -d --link spawning-pool:db -p 8081:80 phpmyadmin/phpmyadmin
--------------------------------------------------------------------------------
/00_how_to_docker/16:
--------------------------------------------------------------------------------
1 | docker logs -f spawning-pool
--------------------------------------------------------------------------------
/00_how_to_docker/17:
--------------------------------------------------------------------------------
1 | docker ps
--------------------------------------------------------------------------------
/00_how_to_docker/18:
--------------------------------------------------------------------------------
1 | docker restart overlord
--------------------------------------------------------------------------------
/00_how_to_docker/19:
--------------------------------------------------------------------------------
1 | docker run --name Abathur -v ~/:/root -p 3000:3000 -dit python:2-slim
2 | docker exec Abathur pip install Flask
3 | echo 'from flask import Flask\napp = Flask(__name__)\n@app.route("/")\ndef hello_world():\n\treturn "
Hello, World!
"' > ~/app.py
4 | docker exec -e FLASK_APP=/root/app.py Abathur flask run --host=0.0.0.0 --port 3000
--------------------------------------------------------------------------------
/00_how_to_docker/20:
--------------------------------------------------------------------------------
1 | docker swarm init --advertise-addr $(docker-machine ip Char)
--------------------------------------------------------------------------------
/00_how_to_docker/21:
--------------------------------------------------------------------------------
1 | docker-machine create --driver virtualbox Aiur
--------------------------------------------------------------------------------
/00_how_to_docker/22:
--------------------------------------------------------------------------------
1 | docker-machine ssh Aiur "docker swarm join --token $(docker swarm join-token worker -q) $(docker-machine ip Char):2377"
--------------------------------------------------------------------------------
/00_how_to_docker/23:
--------------------------------------------------------------------------------
1 | docker network create -d overlay overmind
--------------------------------------------------------------------------------
/00_how_to_docker/24:
--------------------------------------------------------------------------------
1 | docker service create -d --network overmind --name orbital-command -e RABBITMQ_DEFAULT_USER=root -e RABBITMQ_DEFAULT_PASS=root rabbitmq
--------------------------------------------------------------------------------
/00_how_to_docker/25:
--------------------------------------------------------------------------------
1 | docker service ls
--------------------------------------------------------------------------------
/00_how_to_docker/26:
--------------------------------------------------------------------------------
1 | docker service create -d --network overmind --name engineering-bay --replicas 2 -e OC_USERNAME=root -e OC_PASSWD=root 42school/engineering-bay
--------------------------------------------------------------------------------
/00_how_to_docker/27:
--------------------------------------------------------------------------------
1 | docker service logs -f $(docker service ps engineering-bay -f "name=engineering-bay.1" -q)
--------------------------------------------------------------------------------
/00_how_to_docker/28:
--------------------------------------------------------------------------------
1 | docker service create -d --network overmind --name marines --replicas 2 -e OC_USERNAME=root -e OC_PASSWD=root 42school/marine-squad
--------------------------------------------------------------------------------
/00_how_to_docker/29:
--------------------------------------------------------------------------------
1 | docker service ps marines
--------------------------------------------------------------------------------
/00_how_to_docker/30:
--------------------------------------------------------------------------------
1 | docker service scale -d marines=20
--------------------------------------------------------------------------------
/00_how_to_docker/31:
--------------------------------------------------------------------------------
1 | docker service rm $(docker service ls -q)
--------------------------------------------------------------------------------
/00_how_to_docker/32:
--------------------------------------------------------------------------------
1 | docker rm -f $(docker ps -a -q)
--------------------------------------------------------------------------------
/00_how_to_docker/33:
--------------------------------------------------------------------------------
1 | docker rmi $(docker images -a -q)
--------------------------------------------------------------------------------
/00_how_to_docker/34:
--------------------------------------------------------------------------------
1 | docker-machine rm -y Aiur
--------------------------------------------------------------------------------
/01_dockerfiles/ex00/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM alpine
2 |
3 | MAINTAINER vbrazhni
4 |
5 | RUN apk update && \
6 | apk upgrade && \
7 | apk add emacs
8 |
9 | ENTRYPOINT emacs
10 |
11 | # How to build it?
12 | # docker build -t ex00 .
13 |
14 | # How to run it?
15 | # docker run --rm -ti ex00
--------------------------------------------------------------------------------
/01_dockerfiles/ex01/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM debian
2 |
3 | MAINTAINER vbrazhni
4 |
5 | ENV TS3SERVER_LICENSE=accept
6 |
7 | WORKDIR /home/teamspeak
8 |
9 | EXPOSE 9987/udp 10011 30033
10 |
11 | RUN apt-get update && \
12 | apt-get upgrade -y && \
13 | apt-get install -y wget bzip2 && \
14 | wget http://dl.4players.de/ts/releases/3.0.13.4/teamspeak3-server_linux_amd64-3.0.13.4.tar.bz2 && \
15 | tar -xvf teamspeak3-server_linux_amd64-3.0.13.4.tar.bz2
16 |
17 | WORKDIR teamspeak3-server_linux_amd64
18 |
19 | ENTRYPOINT sh ts3server_minimal_runscript.sh
20 |
21 | # How to build it?
22 | # docker build -t ex01 .
23 |
24 | # How to run it?
25 | # docker run --rm -p 9987:9987/udp -p 10011:10011 -p 30033:30033 ex01
--------------------------------------------------------------------------------
/01_dockerfiles/ex02/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM ft-rails:on-build
2 |
3 | EXPOSE 3000
4 | CMD [ "rails" , "s", "-b", "0.0.0.0", "-p", "3000"]
5 |
6 | # How to build it?
7 | # docker build -t ex02 .
8 |
9 | # How to run it?
10 | # docker run -it --rm -p 3000:3000 ex02
--------------------------------------------------------------------------------
/01_dockerfiles/ex02/ft-rails/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM ruby
2 | RUN apt-get update -y && apt-get install -y build-essential libpq-dev nodejs sqlite3
3 |
4 | MAINTAINER vbrazhni
5 |
6 | ONBUILD COPY app /opt/app
7 | ONBUILD WORKDIR /opt/app
8 |
9 | ONBUILD EXPOSE 3000
10 | ONBUILD RUN bundle install
11 | ONBUILD RUN rake db:migrate
12 | ONBUILD RUN rake db:seed
13 |
14 | # How to build it?
15 | # docker build -t ft-rails:on-build .
16 |
--------------------------------------------------------------------------------
/01_dockerfiles/ex03/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM ubuntu:16.04
2 |
3 | MAINTAINER vbrazhni
4 |
5 | RUN apt-get update && \
6 | apt-get upgrade -y && \
7 | apt-get install -y ca-certificates openssh-server wget postfix
8 |
9 | RUN wget https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh && chmod 777 script.deb.sh && ./script.deb.sh && apt-get install -y gitlab-ce
10 |
11 | RUN apt update && apt install -y tzdata && \
12 | apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
13 |
14 | EXPOSE 443 80 22
15 |
16 | ENTRYPOINT (/opt/gitlab/embedded/bin/runsvdir-start &) && gitlab-ctl reconfigure && tail -f /dev/null
17 |
18 | # How to build it?
19 | # docker build -t ex03 .
20 |
21 | # How to run it?
22 | # docker run -it --rm -p 8080:80 -p 8022:22 -p 8443:443 --privileged ex03
--------------------------------------------------------------------------------
/02_bonus/00/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM debian
2 |
3 | MAINTAINER vbrazhni
4 |
5 | RUN apt-get update && apt-get install -y cowsay fortune lolcat
6 |
7 | ENTRYPOINT /usr/games/fortune | /usr/games/cowsay | /usr/games/lolcat
8 |
9 | # How to build it?
10 | # docker build -t a00 .
11 |
12 | # How to run it?
13 | # docker run --rm -ti a00
--------------------------------------------------------------------------------
/02_bonus/01/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM debian
2 |
3 | MAINTAINER vbrazhni
4 |
5 | RUN apt-get update && apt-get upgrade -y && apt-get install -y build-essential git
6 |
7 | # How to build it?
8 | # docker build -t a01 .
9 |
10 | # How to run it?
11 | # docker run --rm -ti a01
--------------------------------------------------------------------------------
/02_bonus/02/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM debian
2 |
3 | MAINTAINER vbrazhni
4 |
5 | RUN apt-get update && apt-get upgrade -y && apt-get install -y wget default-jre
6 |
7 | WORKDIR minecraft
8 |
9 | RUN wget https://launcher.mojang.com/mc/game/1.13/server/d0caafb8438ebd206f99930cfaecfa6c9a13dca0/server.jar
10 |
11 | RUN echo 'eula=true' > eula.txt
12 |
13 | EXPOSE 25565
14 |
15 | ENTRYPOINT java -Xmx1024M -Xms1024M -jar server.jar
16 |
17 | # How to build it?
18 | # docker build -t a02 .
19 |
20 | # How to run it?
21 | # docker run --rm -d -p 25565:25565 a02
--------------------------------------------------------------------------------
/02_bonus/03/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM ubuntu
2 |
3 | MAINTAINER vbrazhni
4 |
5 | RUN apt-get update && apt-get upgrade -y && apt-get install -y nodejs npm git vim emacs
6 |
7 | RUN npm install yarn --global && npm install npm --global
8 |
9 | # How to build it?
10 | # docker build -t a03 .
11 |
12 | # How to run it?
13 | # docker run --rm -ti a03
--------------------------------------------------------------------------------
/02_bonus/04/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM ubuntu
2 |
3 | MAINTAINER vbrazhni
4 |
5 | RUN apt-get update && apt-get upgrade -y && apt-get install -y default-jdk default-jre git vim emacs
6 |
7 | # How to build it?
8 | # docker build -t a04 .
9 |
10 | # How to run it?
11 | # docker run --rm -ti a04
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # docker-1
2 |
3 | `docker-1` is a School 42 Docker project.
4 |
5 | It consists of three parts:
6 | 1. How to Docker
7 | 2. Dockerfiles
8 | 3. Bonus
9 |
10 | _At the [wiki-pages](../../wiki) of project you can find detailed explanations for each task._
11 |
12 | [`docker.en.pdf`](/docker.en.pdf) is the task file.
13 |
14 | ### How to clone?
15 |
16 | This repository includes submodule. Submodule is an app for `ex02` in `01_dockerfiles` part. It is used to demonstrate that created Dockerfile works correctly.
17 |
18 | If you want to clone repository with submodule use:
19 |
20 | ```
21 | git clone --recurse-submodules
22 | ```
23 |
24 | If you will use `git clone `, you will get the empty `app` folder in `01_dockerfiles/ex02`.
25 |
--------------------------------------------------------------------------------
/docker.en.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VBrazhnik/docker-1/f2ce53433091d482cc8d06dd8c9efa641969e323/docker.en.pdf
--------------------------------------------------------------------------------