1. 1 st time - องอาจ วิสาลพัธน์
1st time
O n g a r t V I s a r n p a t
2. 1 st time - องอาจ วิสาลพัธน์
Ongart Visarnpat (pAt)
#มันก็จะเป็ดๆหน่อย
Digital Media | Flash Animator | E-Learning | Web Designer | Social Media |
Project Manager | Front End Developer | Joomla | Ubuntu Linux
System Administrator, Webmaster @ EGAT
Digital Project Manager @ Wunderman (Y&R)
Digital Media Designer @ GeneEd (inVentiv learning solutions)
3. 1 st time - องอาจ วิสาลพัธน์
L A M P !
Machine > OS > Library > Application > Configuration > Users > Monitor
1 2 3 4 5 6 7
4. 1 st time - องอาจ วิสาลพัธน์
because it is ..
efficien(la)zy & cool !
Why ?
5. 1 st time - องอาจ วิสาลพัธน์
Machine > OS > Library > Application > Configuration > Users > Monitor
1 2 3 4 5 6 7
efficiency เหนื่อยครั้งเดียว
consistency Dev ยังไง Prod. ยังงั้น
as-a-code Github, hub.docker
6. 1 st time - องอาจ วิสาลพัธน์
ออกหา..ปลาวาฬ
+ Docker Channel
youtube.com/user/dockerrun
+ Docker Tutorial
youtube.com/playlist?list=PLkA60AVN3hh_6cA
z8TUGtkYbJSL2bdZ4h
7. 1 st time - องอาจ วิสาลพัธน์
Image source : https://www.accenture.com/
Physical Virtual Machines
Sharing Physical
Manage by Hypervisor
Containers
Sharing OS
Manage by Docker-engine
Little bit about Architecture
8. 1 st time - องอาจ วิสาลพัธน์
Little bit about Platform
WINDOWS 7 ?
Option 1 : Linux VM บน VirtualBox + Docker
Option 2 : Docker Toolbox (ถ้ายังมีให้โหลดอยู่นะ)
9. 1 st time - องอาจ วิสาลพัธน์
Little bit about Command
docker run
docker start
docker stop
docker exec
docker logs
docker ps
docker images
docker rm
docker rmi
docker version
docker info
docker pull
docker commit
docker save
docker load
docker push
$ docker run --name garage_db -d
-v /garage/db/mysql/:/var/lib/mysql/
-p 3306:3306
--env MYSQL_ROOT_PASSWORD=p@ssW0rd
--env MYSQL_USER=docker
--env MYSQL_PASSWORD=docker
--env MYSQL_DATABASE=db_dock
mysql:5.7
$ docker run --name garage_web -tid
--link garage_db:db
-v /garage/htdocs/:/var/www/html/
-v /garage/log/:/var/log/apache2/
-v /garage/conf/:/etc/apache2/sites-available/
-v /garage/conf/ssl/:/etc/ssl/
-p 80:80
-p 443:443
egat-php7:latest
$ docker run --name garage_pma -d
--link garage_db:db
-p 8080:80
phpmyadmin/phpmyadmin
ตัวอย่างคาสั่งและ parameter
$ docker run
-- name ตั้งชื่อ container
--link เชื่อมต่ออีก container
-d detached mode ทางานในแบบ background
-it เริ่มต้น service ข้างใน container แล้วคงไว้
-v map volume ระหว่าง container กับ host
-p map port ระหว่าง container กับ host
-- env ตั่งค่า environment ขึ้นอยู่กับแต่ละ service
10. 1 st time - องอาจ วิสาลพัธน์
Little bit about Coding
version: "2"
services:
php:
build: ./build/php7
volumes:
- /garage/htdocs:/var/www/html
- /garage/log:/var/log/apache2
- /home/ongart/lamp/conf:/etc/apache2/
- /home/ongart/ssl:/etc/ssl
links:
- mysql
ports:
- 80:80
- 443:443
mysql:
image: mysql:5.7
container_name: mysql
volumes:
- ./build/mysql:/docker-entrypoint-
- /garage/db/mysql:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=password
FROM php:7.0-apache
MAINTAINER Ongart V.
RUN apt-get install libldap2-dev -y &&
rm -rf /var/lib/apt/lists/* &&
docker-php-ext-configure ldap --with-
libdir=lib/x86_64-linux-gnu/ &&
docker-php-ext-install ldap
RUN docker-php-ext-install mysqli pdo pdo_mysql
mbstring opcache soap zip xsl xml xmlrpc ctype
RUN curl -sS https://getcomposer.org/installer | php -- -
-install-dir=/usr/local/bin --filename=composer RUN rm -
r /var/lib/apt/lists/*
EXPOSE 80
LAMP stack -Sample บางส่วนPHP7.0 - Sample บางส่วน
Code สร้าง docker image
1 ไฟล์ 1 service
Code สร้าง service stack
1 ไฟล์สร้าง stack หลาย service
11. 1 st time - องอาจ วิสาลพัธน์
Document Dir Layout
/garage/
./htdocs
./db
./mysql
./log
./conf
./ssl
./sqldump
Machine > OS > Deploy
1 2 3
Machine > OS > Library > Application > Configuration > Users > Monitor
1 2 3 4 5 6 7
------> DocumentRoot
---> Binary Database
-----------> logs
----------> *.conf
-----> Cert
------> *.sql
Little bit about Playing Around
12. 1 st time - องอาจ วิสาลพัธน์
(option 1) Docker Compose (How it should be)
#!/bin/bash
# author: ongart v.
mkdir /garage
mkdir /garage/log
mkdir /garage/htdocs
mkdir /garage/db
mkdir /garage/db/mysql
mkdir /garage/conf
mkdir /garage/ssl
docker-compose -f
/root/lamp-compose.yml
up –d --build
Shell script location :
/root/lamp-deploy.sh
Compose file location :
/root/lamp-compose.yml
Document Dir Layout
/garage/
./htdocs
./db
./mysql
./log
./conf
./ssl
./sqldump
Dockerfile location :
/root/build/php7/Dockerfile