- David Schovanec
- Prague Ruby Meetup 20.4.2017
- virtualizace
- minimální vrstva
- sdílení prostředků (hw) s hostem
- izolace
- engine
- Docker samotný
- již nativní podpora Win, OSX
- instalace pro různé OS
 
- image
- předloha kontejneru, která lze spustit v Dockeru
 
- Dockerfile
- deklarativní popis image
 
- container
- instance jednoho image
 
- 
- stejné jako github
- publikování svých images
- použití cizích images
 
- 
chci ve svém Rails projektu použít technologii, kterou nemám nainstalovanou, nevím jak ji nainstalovat, nebo ji nechci instalovat 
redis "repozitář"
- docker run redis
- docker run -p 6379:6379 --name meetup-redis redis
- docker run -d -p 6379:6379 --name meetup-redis redis
mariadb "repozitář"
- 
docker run mariadb:10.0(jednoduše použiji i starší verzi)
- 
docker run -d -e MYSQL_ALLOW_EMPTY_PASSWORD=1 -p 3306:3306 --name mariadb mariadb:10.0
- 
tagy mariadb,mariadb:latest,mariadb:10,mariadb:10.1(trochu podobné jako semver)
- Používá se tzv Dockerfile
- specifická syntax
- ADD,- COPY,- FROM,- RUN,- WORKDIR, ...
 
FROM ruby:2.4
#RUN apt-get update -qq && apt-get install -y build-essential
RUN mkdir /app
WORKDIR /app
COPY Gemfile* /app/
RUN bundle install
COPY . /app
CMD rm tmp/pids/server.pid && rails server -b 0.0.0.0
- 
Vytvoření image z Dockerfile s tagem - docker build -t meetup/app .
 
- 
Spuštění containeru - docker run -e "DATABASE_URL=mysql2://root@db:3306/app" --link mariadb:db -p 3000:3000 --name app meetup/app
 
- 
Vytvoření databáze - docker exec app rails db:create
 
- 
Spuštění konzole - docker exec -it app rails c
 
- 
Generování scaffoldu - docker exec app rails generate scaffold MeetupAttendee name:string bio:text age:integer
- !!!!!!!
 
- 
Spuštění se synchronizací externí složky - --volume /Users/schovi/work/docker-meetup/app:/app
- docker run -e "DATABASE_URL=mysql2://root@db:3306/app" --link mariadb:db -p 3000:3000 --name app --volume /Users/schovi/work/docker-meetup/app:/app meetup/app
 
- Vše předchozí lze deklarativně zapsat a spouštět jednoduše pomocí nástroje docker-compose
version: '3'
services:
  web:
    build: .
    environment:
      DATABASE_URL: mysql2://root@db:3306/app
    volumes:
      - ./app:/app
    ports:
      - 3000:3000
    links:
      - mariadb:db
  mariadb:
    image: mariadb:10.0
    ports:
      - 3306:3306
    volumes:
      - ../data:/var/lib/mysql
    environment:
      MYSQL_ALLOW_EMPTY_PASSWORD: 1
- docker-compose build
- docker-compose up
- docker-compose exec app ...
- 
docker-compose nativně podporuje nahrávání env variables z .env- v docker-compose.ymlnapř- ports: - ${PORT}:${PORT}
- do kontejneru je pak protlačíte pomocí env_file: .env
 
- v 
- 
standalone runner 
#! /bin/bash
docker run --name docker-ruby -w /app -v $PWD:/app ruby:2.4 ruby $@
docker stop docker-ruby > /dev/null
docker rm docker-ruby > /dev/null