เนื่องด้วยผมไปเจอ Lab ของเมืองนอกแล้วชอบในเรื่องการ setup environment ที่ง่ายและสะดวกดี ผมเลยสนใจที่จะทดสอบขึ้นมาบ้าง แต่ทีนี้ Lab ของเมืองนอกเค้าไม่ได้ setup โดยใช้ขั้นตอน 1-2-3-4 แต่กลายเป็นใช้แค่ one command for all หรือ Infrastructure as Code (IaC) นั่นคือการใช้งาน Docker Compose นั่นเอง
Docker Compose คือการสร้าง Infrastructure ด้วย Container หลายๆ Container พร้อมกัน อีกทั้งให้มัน link หากันไว้เลยนั่นเอง
โดยในโพสต์นี้จะไม่ได้ใส่รายละเอียดทั้งหมดของ Docker Compose นะครับ แต่จะเน้นเรื่องการติดตั้ง Docker Compose ให้สามารถใช้งานได้ใน Ubuntu 16.04 ครับ
1. Install Linux Image Virtual เพื่อให้ Docker สามารถใช้ aufs storage ได้
1 |
sudo apt-get install -y --no-install-recommends linux-image-extra-$(uname -r) linux-image-extra-virtual |
2. ติดตั้ง Repository เพิ่ม
1 2 3 4 5 |
apt-get install \ apt-transport-https \ ca-certificates \ curl \ software-properties-common |
1 |
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - |
1 2 3 4 |
sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable" |
3. Install Docker
1 2 |
apt-get update apt-get install docker-ce -y |
4. Download Docker-Compose
1 2 |
curl -L "https://github.com/docker/compose/releases/download/1.11.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose |
5. ทดสอบการใช้งาน docker-compose
1 |
docker-compose --version |
6. ทดสอบสร้าง Test environment จาก Lab ของเมืองนอก สร้างไฟล์ docker-compose.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
version: '2' services: wordpress: image: wordpress:4.7.0 ports: - 8080:80 environment: WORDPRESS_DB_PASSWORD: example entrypoint: - /bin/sh - -c - (sleep 5; echo "define('WP_AUTO_UPDATE_CORE', false);" >> /var/www/html/wp-config.php) & docker-entrypoint.sh apache2-foreground mysql: image: mysql:5.7 container_name: mysql environment: MYSQL_ROOT_PASSWORD: example |
จากใน docker-compose.yml ตัวนี้เราจะสร้าง Container ด้วยกัน 2 ตัวคือ
- WordPress
- WordPress 4.7.0
- Mapping Port จากข้างนอก 8080 เข้าไป 80 ภายใน Container
- Password ของ database คือ example
- เมื่อ load ขึ้นมาให้ทำการปิดการ update WordPress
- MySQL
- MySQL version ล่าสุด
- ตั้งชื่อเป็น MySQL เพื่อให้ Docker กำหนด Container เพิ่ม MySQL เข้าไปใน Host File
- MySQL กำหนด root password เป็น example
ตัวอย่างของ Joomla 3.7.0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
version: '2' services: joomladb: image: mysql:5.6 environment: MYSQL_ROOT_PASSWORD: example joomla: image: joomla:3.7.0-apache ports: - 8080:80 environment: JOOMLA_DB_HOST: joomladb JOOMLA_DB_NAME: root JOOMLA_DB_PASSWORD: example |
7. Start Docker-Compose
1 |
docker-compose up |
จากนั้นรอการ download image แต่ละตัวครับ
8. ทดสอบเข้าใช้งาน IP ของ Host Port 8080 จะกลายเป็นเข้าไปที่ Container ที่เราสร้างขึ้น จะพบว่าเป็นหน้าติดตั้ง wordpress 4.7.0 โดยไม่ต้องทำอะไรเพิ่มเติม
9. จากนั้นเมื่อ Setup เสร็จเราก็พร้อมที่จะนำ WordPress 4.7.0 มาลองแงะแล้วครับ 🙂
Source::
- https://www.jaynarol.com/docker-compose-part-2/
- http://blog.websecurify.com/2017/02/hacking-wordpress-4-7-0-1.html