Menu

Showing posts with label wordpress. Show all posts
Showing posts with label wordpress. Show all posts

Wednesday, December 18, 2019

[Docker] การใช้ Docker สำหรับทำ Host เว็บไซต์หลายเว็บบน server เครื่องเดียว
[Docker] How to Use Docker to Host Multiple Websites in One Server

การใช้ Server เพียงเครื่องเดียวในการ host หลายเว็บไซต์ เราจำเป็นต้องใช้ Reverse Proxy

ในที่นี้เราจะใช้ NGINX Proxy ในการจัดการ Proxy ให้เรา โดยมีวิธีการติดตั้งดังนี้
  1. สร้าง docker network
  2. docker network create nginx-proxy
    
  3. สร้างไฟล์ docker-compose.yml โดยใช้ไฟล์ตั้งต้นจาก https://github.com/jwilder/nginx-proxy/blob/master/docker-compose.yml
  4. เพิ่ม code ข้างล่าง ใน docker-compose.yml ของ nginx-proxy
  5. networks:
      default:
        external:
          name: nginx-proxy
    
  6. รัน nginx-proxy ด้วยคำสั่งดังนี้
  7. docker-compose up -d
    

[Docker] การ Deploy Wordpress ด้วย Docker
[Docker] How to Deploy Wordpress with Docker

ขั้นตอนในการสร้าง docker-compose.yml สามารถอ่านได้ที่ Quickstart: Compose and WordPress

เมื่อสร้าง docker-compose.yml เสร็จแล้ว ให้แก้ไขไฟล์ดังนี้
  1. ให้แก้ volumes ใน service db ดังนี้ เพื่อให้เก็บ mysql data ใน folder เดียวกับ docker-compose.yml
  2. volumes:
        - ./db_data:/var/lib/mysql
    
  3. ให้เพิ่ม volumes ใน service wordpress ดังนี้ เพื่อให้เก็บข้อมูล web ใน folder เดียวกับ docker-compose.yml
  4. volumes:
        - ./html:/var/www/html    
    
ไฟล์ docker-compose.yml หลังจากแก้ไขแล้ว จะเป็นดังนี้
version: '3.3'

services:
   db:
     image: mysql:5.7
     volumes:
       - ./db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: somewordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     volumes:
       - ./html:/var/www/html    
     ports:
       - "8000:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
       WORDPRESS_DB_NAME: wordpress
หลังจากนั้นให้ build project ตามเว็บข้างต้นได้เลย

หมายเหตุ เพื่อความปลอดภัย ควรเปลี่ยน user และ password ต่างๆในส่วนของ environment ให้ต่างไปจาก code ตัวอย่าง