Docker Bad Practice! อะไรที่ไม่ดีเราทำ และ มัน พัง!

สวัสดีครับ เมื่อวันเสาร์ที่ผ่านมา (19-พ.ย.-59) ผมได้ไปร่วมอีเว้น Garfana for Noob! มาครับ ก็ได้ลองเล่นพวก InfluxDB, Telegraf และตัว Garfana ที่สอนโดยพี่หมี Bigbear.io เป็นคลาสที่เจ๋งมากครับ จัดที่ Autumn : desserts, desire and destiny ที่บางใหญ่ซิตี้ ซอย 9/4 ใกล้บ้านผมมากกกก ทีนี้ในคลาสผมก็เลือกที่จะใช้งาน Tools ทั้งสามแบบที่เป็น Docker Container ครับ ผมก็ได้บ่นๆกะ พี่กาน ภวิน มิลล์ ว่า อืมใช้ Docker
ชิลมาก แต่ WordPress เราเนี่ย (บล็อกนี้) แม่มโคตร Bad Practice เลย ละก็ไม่เคยคิดจะมาแก้ไขอะไรเล้ย

คืนนั้นกลับมาที่บ้านครับลั้ลลา SSH เข้าเครื่อง WordPress ผม แล้วก็กะจะอัพเกรด Container ให้เรียบร้อย… ด้วยคำสั่ง…

$ docker-compose down

ทำไมมัน delete container ไปด้วยหว่า… อ้าวหายหมดยกบล็อก… งานงอก เอาขึ้นใหม่ก็…

 

ที่มามันเริ่มมาจากตัวบล็อก wordpress แบบ self-host นี้เป็นการลองเล่น docker และ docker-compose ตอนที่ยังไม่รู้อะไรมากครับ ยังเป็น Noob อยู่ ก็ตาม Tutorial ไปเรื่อยๆ ตอนนั้นยังไม่รู้เลยครับว่า mount ไปทำไม แต่เห็นเขาเขียนไว้ใน Tutorial ครับ แถมที่เขียนตอนนั้นคือเขียน mount path ของ /var/www/html ไว้ครับ.. แต่มันควรอยู่กะ container wordpress ใช่ปะ แต่นี่คือ…

wordpress_db:
  volumes:
    - ~/wordpress/wp_html:/var/www/html
  image: mariadb
  environment:
    MYSQL_ROOT_PASSWORD: "<password>"

ครับ… การ mount volume จาก container เป็น Best Practice อย่างนึง แต่นี่มันผิดที่เฟ้ยยยยยยยยยยย ก็ว่าทำไมไม่เคยเห็นโฟลเดอร์ wp_html มีไฟล์อะไรเลย…

ทีนี้พอปัญหามันเกิด ก็ขนลุกขนพองเพราะจริงๆบนเครื่องเราไม่มี backup content ของ wordpress ไว้เลย

โชคดี…หรอ? คือเมื่อนานมาแล้วเคยพยายามจะ backup ตัว wordpress เอาไว้ (สารภาพว่าตอนนั้นไม่ได้สังเกตุ compose ไฟล์ที่เขียนเลยครับ) แบบไม่ได้ใช้ docker cp ครับ ไม่รู้ว่ามี วิธีแก้ปัญหาเฉพาะหน้าที่ควรทำคือ

docker cp <containerId>:/file/path/within/container /host/path/target

ที่มา:Docker – copy file from container to host

สิ่งที่ทำจริงๆตอนนั้นคือ… exec bash เข้าไปใน container แล้วไปลง git แล้ว push /var/www/html ขึ้น github public repo นี่แหละครับ… Bad Practice ไม่ควรทำเลยนะครับ ตอนนั้นทำด้วยความ Noob จริงๆ

ละก็ mysqldump ตัว database wordpress เลยยังไม่ได้เจ็บมากครับ แต่ก็มี Post ใหม่หายไป ก็เลยตามกู้ด้วยการ ใช้งาน webcache จาก Cacheview สะดวกดีครับ ที่ใช้ก็ใส่ URL ลงไป แล้วกดให้เข้าไปที่ Google Webcache กลับไปย้อนดูแล้วไปก็อปโค้ดของบล็อกมาใส่ใหม่

ทีนี้ปัญหาอีกอย่างที่ตามมาเลยคือรูปหายครับ แต่ cache ใน google chrome เครื่องผมมันยังมีรูปอยู่เลยโชคดีไป แต่… มัน Save ลงเครื่องยากมากครับ ก็ทำได้โดยการไป view source หาไฟล์รูปแล้วก็ลากรูปที่ Preview ในหน้า view source นั่นแหละครับไปเปิดอีกแท็ปนึง เท่านี้ก็จะเซฟรูปได้แล้วครับ แต่จะมาเป็น Format webp ซึ่งผมก็ไปหาเว็บแปลงรูปเป็น jpeg แล้วไปอัพใหม่ครับ ก็เลยผ่านปัญหานี้มาได้แบบแย่ๆ ฮ่าๆๆๆ

บทสรุปนี้นี่รู้สึกเจ็บปวดมากครับ คือรู้ครับว่าการใช้งาน Docker ผมนี่มันแย่มาก แต่คือตัวบล็อกผมไม่ค่อยได้มาดูแลอะไรมาก เลยปล่อยๆไป รู้ปัญหาแต่ไม่แก้สักที จนเกิดเรื่องจนได้ ขอให้เรื่องนี้เป็นตัวอย่างแย่ๆในการใช้งาน Docker มีปัญหาอย่าละเลยครับ เพราะมือเรามันลั่นได้ทุกเมื่อ T^T

Join the Conversation

1 Comment

  1. อ่านแล้วตื่นเต้นไปด้วยเลยครับ ขอบคุณที่มาแชร์ปัญหานะครับ

Leave a comment

Leave a Reply to mixedmuffin Cancel reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: