├── .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 --------------------------------------------------------------------------------