WordPress

v kontajneroch

Ján Bočínec

Čo potrebujeme...

  • Vývojové prostredie
  • Nástroje na vytvorenie a konfiguráciu vývojového prostredia
  • Nástroje na prácu s kódom a jeho nasadenie

Workflow

Automatizácia

  • Písanie kódu
  • Testovanie kódu
  • Ladenie kódu (debugging)
  • Nasadenie kódu

Čo potrebujeme
pre WordPress?

(PHP 5.6+, MySQL 5.6+ / MariaDB 10+)

LAMP alebo LEMP?

  • Linux
  • Apache / Nginx
  • MySQL / MariaDB
  • PHP / HHVM
  • Local
  • Development
  • Staging
  • Production

Command Line Tools

  • Verziovanie (GIT / SVN)
  • WP-CLI
  • "Task runners" (Gulp / Grunt)
  • Dependency managers (Composer, npm, bower)

Text editory / IDEčka

  • PhpStorm
  • Sumblime Text
  • Atom

Databázový klienti

  • Sequel Pro
  • Navicat
  • Querious (OS X)
     
  • Adminer
  • phpMyAdmin

Čo by sme mali zvážiť?

  • Pracujem v tíme?
  • Vývíjam témy, moduly alebo WordPress jadro?
  • Ako plánujem nasadzovať  svoj kód?

"U mňa to funguje!"

Čo po 3 mesiacoch?

XAMP, MAMP, WAMP...

  • Jednoduchá inštalácia
  • Nulová konfigurácia
  • Špecifická, fixná konfigurácia
  • Ťažšie na zdielanie
  • DesktopServer

Natívny "stack"

(Linux / Mac)

  • Nenáročný
  • Rýchle vytváranie projektov
  • Automatizované nasadzovanie
  • Treba udržovať  závislosti
  • Zdieľanie s iným vývojárom

Všade rovnaká fixná konfigurácia

VM a Vagrant

(VirtualBox, Parallels, VMware)

  • Konfigurácia nového serveru
  • "Jeden" súbor
  • Hocijaké prostredie
  • Nezávislé, cross-platform
  • Kompletne izolované
  • Ľahko zničiteľné
  • Automatizácia
  • Je to prehnané
  • Náročné na systémové prostriedky
  • Nekonečný "provision"

VVV

  • Varying Vagrant Vagrants
  • Zameraná na vývoj WordPress
  • Vhodné na vývoj samostatných tém a modulov, ako aj prispievanie do jadra
     
  • https://github.com/Varying-Vagrant-Vagrants/VVV
  • https://make.wordpress.org/core/handbook/

Trellis

(Roots)

  • LEMP stack
  • Modernejší prístup
  • Automatizácia pomocou Ansible
  • Nasadzovanie "jedným príkazom"
     
  • https://github.com/roots/trellis

VM

Kontajnery

Linux & OS X & Windows

Docker Toolbox

Kitematic

Docker Quickstart Terminal

beta.docker.com

Docker natívne

Docker?

  • "Jeden" konfiguračný súbor
  • Docker image
  • Modulárny
  • Nadstavba VM, ale nie samostné VM
  • Samostatné procesy (microservices)
  • Rýchle nasadzovanie (aktualizuje len nové veci, ako Git)
  • Docker Hub

Pracujeme v tíme...

  • Rozdielne verzie modulov, témy alebo WordPress
  • Rozdielna verzia PHP
  • Rozdielne verzie webservera (Apache / Nginx)
  • Rozdielne verzie MySQL
  • Rozdielny operačný systém a jeho procesy
  • Rozdielna konfigurácia (pamäť, CPU, moduly)

Konzistencia

a stabilita

Dockerfile

FROM nginx:1.9-alpine
MAINTAINER Ján Bočínec 

RUN mkdir -p /var/www/html
WORKDIR /var/www/html

COPY nginx.conf /etc/nginx/conf.d/default.conf

COPY . ./
version: '2'
services:
  my-nginx:
    build: .
    volumes:
      - .:/var/www/html
    ports:
      - "8080:80"
    links:
      - my-php
  my-php:
    build:
      context: .
      dockerfile: Dockerfile.php-fpm
    volumes:
      - .:/var/www/html
    ports:
      - "9000:9000"
  	links:
      - my-mysql
  my-mysql:
	image: mariadb:5.5
	volumes:
	  - /var/lib/mysql
	environment:
	  MYSQL_ROOT_PASSWORD: wp
	  MYSQL_DATABASE: wp
	  MYSQL_USER: wp
	  MYSQL_PASSWORD: wp

docker-compose up

Čo môžeme kontajnerovať?

  • Redis / Memcached
  • Let's Encrypt (SSL) + HTTP/2
  • Composer
  • sSMTP + MailHog
  • Xdebug
  • Blackfire.io / New Relic

Rekapitulácia

  • Dockerfile je konfiguračný súbor obrazu (image)
  • Docker images sú jednorázové, nemeniteľné a voľne redistribuovateľné súborové systémy
  • Docker kontajner poskytuje základné Linuxové prostredie na beh "image"
  • Každý projekt si môže zadefinovať  vlastné docker images alebo použiť už existujúce z Docker Hubu
  • Nepotrebujeme nič inštalovať  lokálne
  • Každý kontajner by mal plniť  práve jednu úlohu
  • docker-compose nám automatizuje časť  procesov
  • "Mapping" nám umožňuje priradiť  zdroje ku kontajneru
  • "Mounting" dovoľuje využívať  adresáre zo serveru 

Wocker

  1. Nainštalujeme Vagrant http://www.vagrantup.com/
  2. Nainštalujeme VirtualBox
    https://www.virtualbox.org/
  3. Nainštalujeme vagrant-hostsupdater
$ vagrant plugin install vagrant-hostsupdater

4. Stiahneme si Wocker repozitár

$ git clone https://github.com/wckr/wocker.git && cd wocker

5. Naštartujeme Wocker

$ vagrant up

6. Máme funkčnú inštaláciu WordPress

http://wocker.dev/

Local Machine:

Guest machine:

/data/wocker/
/home/core/data/wocker/

vagrant ssh

$ wocker wp core update
$ wp plugin update --all
$ wocker wp plugin install jetpack --activate
# Zastavenie kontajneru
$ wocker stop CONTAINER
# Štart kontajneru
$ wocker start CONTAINER
# Štart nového kontajneru
$ wocker run --name wp-weekend
# Aktualizácia Wockeru
$ wocker update
# Zoznam bežiacich kontajnerov
$ wocker ps
# Zoznam všetkých kontajnerov
$ wocker ps -a
# Zničiť všetko vrátane lokálnych súborov!
$ wocker destroy
# Bash priamo v kontajnery, napr. "mysql"
$ wocker exec -it wp-weekend bash

vagrant halt

@JohnnyPea

WordPress v kontajneroch

By Ján Bočínec

WordPress v kontajneroch

WordPress v kontajneroch a ako použiť Vagrant a Docker pre moderné vývojové prostredie

  • 1,608