PHP@Docker - w produkcji
-
Upload
marcin-kurzyna -
Category
Technology
-
view
479 -
download
0
Transcript of PHP@Docker - w produkcji
PHP@Doker - w produkcji
PHPers #1Rzeszw 27.01.2016
Marcin Kurzyna
W brany od 14 latWirtualna Polska S.A
NextWebMedia
GaduGadu
Freelance!
OpenSourceDocker, PHP etc
PLD Linux
HashIDs
https://keybase.io/mquhttps://www.linkedin.com/in/mkurzyna
Na pocztku by chroot
Docker Nihil novi1982: chroot
2000: Virtuozzo
2001: Linux-Vserver
2005: OpenVZ
2008: LXC
2013: Docker
...
https://en.wikipedia.org/wiki/Operating-system-level_virtualization
Configure once run everywhere
Sheeple.
Dev, stage, prod
Adresy usug
Wiele kontenerw lokalnych
Wiele hostow
Rne hostynp. DB: single node vs master+slaves
docker run \--name dba.2501
docker run \--name php.2501 \--link dba.2501:db-master \--link dba.2501:db-slave ...
Lokalnie udajemy produkcj...
docker run \--name php.2501 \ --add-host db-master:10.0.0.2 \--add-host db-slave:10.0.0.3 ...
...na produkcji udajemy linkowanie lokalne.
Adresy usug pt 2
...ale, ale ja mam wicej ni jeden projekt?!
docker run --name 2501.project.local -p 80:80 ...
docker run --name skynet.project.local -p 80:80 Bind for 0.0.0.0:80 failed: port is already allocated
docker run --name 2501.project.local -p 80:80 ...
...ups.
docker run --name 2501.project.local -p 127.0.0.1:80:80 docker run --name skynet.project.local -p 127.0.0.2:80:80
Suchamy tylko lokalnie,
Nie ma konfliktu adresw,
...ale: Linux only.
Nazwy hostw
2501.project.local
project.stage.example.com
project.com
server {server_name ~(^|\.)project\.(local|(stage\.example\.)?com)$}
Nginx na ratunek.
$HTTP[host] =~ ~(^|\.)project\.(local|(stage\.example\.)?com)$ {...}
Lighttpd te moe.
...albo po prostu wiele vhostw.
Uprawnienia
Kontenery nie s prywatneRepozytoria (doker hub itp.)
Devs nie musz / nie powinni posiadahase produkcyjnych
Rozwizania?Autoryzacja w oparciu o hosty?Co ze zmiennym IP kontenerw?
Hasa w zmiennych rodowiskowych?
Volumeny
/var/lib/docker
Przechowuje obrazycignite z repozytoriw
Zbudowane
Czciowe (cache)
Przechowuje volumeny
Przechowuje metadane
Co to oznacza?
/var/lib/docker
# docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Brak dziaajcych kontenetw...
/var/lib/docker
# docker imagesREPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
Brak zachowanych obrazw...
/var/lib/docker
# du -sh /var/lib/docker1,3G/var/lib/docker
...ups.
Po losowym czasie mamy 100% dysku.
VOLUME /data
Volumeny nie s kasowane...
To dobrze!
Ale trzeba rcznie sprzta
...bo 100% w /var nie suy produkcji.
VOLUME /data
FROM php:latestMAINTAINER Marcin Kurzyna
RUN curl -sS https://getcomposer.org/installer | \ php -- --install-dir=bin --filename=composer
VOLUME /dataWORKDIR /data
CMD ["php", "-S", "0.0.0.0:80", "-t", "/data"]
FROM s16.base
ADD . /dataRUN composer install
VOLUME /data
[root@localhost ~]# docker run --rm -it -p 80:80 "s16.app"PHP 7.0.2 Development Server started at Wed Jan 27 14:09:21 2016Listening on http://0.0.0.0:80Document root is /dataPress Ctrl-C to quit.
[Wed Jan 27 14:09:47 2016] 172.17.0.1:53556 [200]: /index.php - require_once(): Failed opening required '/data/vendor/autoload.php' (include_path='.:/usr/local/lib/php') in /data/index.php on line 3