Menu

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 wordpress ที่เป็นเว็บใหม่บนเครื่อง server เรามีวิธีการดังนี้
  1. สร้างไฟล์ docker-compose.yml ตาม https://docs.docker.com/compose/wordpress/
  2. เพิ่ม VIRTUAL_HOST ที่เป็น Domain ของเว็บที่ใช้เรียกเข้ามา และ VIRTUAL_PORT ที่เป็น Port ที่สั่ง expose ออกมา ในส่วนของ Environment ของ service wordpress ใน docker-compose.yml ดังนี้
    VIRTUAL_HOST: example.com
    VIRTUAL_PORT: 80
    
  3. เพิ่มการตั้งค่า docker network ใน docker-compose.yml ดังนี้
  4. networks:
      default:
        external:
          name: nginx-proxy
    
    หลังจากแก้ไขตาม 2 ข้อข้างต้นแล้ว จะได้ 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
         ports:
           - "8000:80"
         restart: always
         environment:
           WORDPRESS_DB_HOST: db:3306
           WORDPRESS_DB_USER: wordpress
           WORDPRESS_DB_PASSWORD: wordpress
           WORDPRESS_DB_NAME: wordpress
           VIRTUAL_HOST: example.com
           VIRTUAL_PORT: 80
    volumes:
        db_data: {}
    networks:
      default:
        external:
          name: nginx-proxy
    
  5. รัน wordpress ด้วยคำสั่งดังนี้
  6. docker-compose up -d
    
หลังจากนั้น ให้เราลองเรียกหน้าเว็บของเราผ่านทาง Web Browser เพื่อทดสอบ

หมายเหตุ ในกรณีนี้เราต้องตั้งค่า DNS ของ domain ของเว็บเราให้ชี้มาที่เครื่อง server แล้ว

No comments:

Post a Comment