Docker ใน Plesk คืออะไร?
Plesk รองรับ Docker ผ่าน Docker Manager Extension ช่วยให้ผู้ดูแลระบบสามารถจัดการ Docker Container ผ่านหน้าเว็บได้โดยไม่ต้องสั่ง command ใน Terminal
ติดตั้ง Docker บน Server ที่ใช้ Plesk
# ติดตั้ง Docker Engine
curl -fsSL https://get.docker.com | sh
# เพิ่ม user plesk เข้า docker group
usermod -aG docker plesk
จากนั้นไปติดตั้ง Docker Manager Extension ผ่าน Plesk Marketplace (เมนู Extensions)
3 วิธีใช้ Docker ร่วมกับ Plesk
1. Docker Container หัน Port ผ่าน Nginx Reverse Proxy ของ Plesk
Plesk มี Nginx Reverse Proxy อยู่แล้ว สามารถให้ส่ง Traffic มายัง Container ได้โดยต๋างหาก Docker Container:
docker run -d \
--name myapp \
-p 3000:3000 \
--restart unless-stopped \
myapp:latest
จากนั้นตั้งค่า Plesk Nginx Additional Directives ใน Domain Settings:
location / {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
2. Docker Container สำหรับ Service ส่วนตัว (Internal)
เหมาะสำหรับ Redis, Elasticsearch, RabbitMQ ที่เว็บไซต์ใช้ภายใน:
docker run -d \
--name redis \
--network host \
redis:7-alpine redis-server --requirepass yourpassword
3. ใช้ Docker สำหรับ Dev/Test Environment
รันตัวอย่างเป็น Staging Environment บน Port อื่นด้วย Docker Compose
Plesk Docker Manager Extension
หลังติดตั้ง Extension แล้ว ใช้งานได้ดังนี้:
- Pull Image จาก Docker Hub ผ่าน GUI
- Start/Stop/Remove Container
- ดู Logs ของ Container
- Map Port และ Volume
- ตั้งค่า Environment Variables
SSL สำหรับ Docker Container ผ่าน Plesk
Plesk จัดการ SSL Certificate ให้อัตโนมัติผ่าน Let’s Encrypt ดังนั้นเพียงตั้งค่า Reverse Proxy ใน Plesk ไปยัง Container พอ:
- เพิ่ม Domain ใน Plesk
- ติดตั้ง SSL Let’s Encrypt (ฟรี)
- ตั้ง Nginx Additional Directives ให้ชี้เข้า Container Port
ตัวอย่าง: Node.js App บน Docker + Plesk
# Start Node.js App Container
docker run -d \
--name nodejs_app \
--restart unless-stopped \
-p 4000:4000 \
-e NODE_ENV=production \
mynodejs:latest
# Nginx Config ใน Plesk (Additional Nginx Directives)
location / {
proxy_pass http://127.0.0.1:4000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
Docker Compose ร่วมกับ Plesk
version: '3.8'
services:
app:
image: myapp:latest
restart: unless-stopped
ports:
- "127.0.0.1:3000:3000" # เปิดเฉพาะ localhost
environment:
APP_ENV: production
worker:
image: myapp:latest
command: php artisan queue:work
restart: unless-stopped
แนะนำให้ผูก Port เป็น 127.0.0.1:port เพื่อไม่ให้เข้าถึงจากภายนอกโดยตรง
Best Practices
- ผูก Container Ports ไว้กับ
127.0.0.1ไม่ใช่0.0.0.0 - ให้ Plesk Nginx จัดการ SSL แทนการติดตั้ง SSL ใน Container
- ไม่รัน Nginx/Apache ใน Container ถ้า Plesk จัดการ Web Server อยู่แล้ว
- ใช้ Firewall ปิด Port ที่ไม่จำเป็น

