วิธี ADD / COPY Hidden File ขณะ Build Docker Image

ปัญหา

เมื่อเราใช้คำสั่ง ADD หรือ COPY ใน Dockerfile เพื่อคัดลอก Hidden File (ไฟล์ในระบบ Linux ที่ชื่อขึ้นต้นด้วยจุด .) ไปยัง Docker Image ในขณะที่เรา Build Image

ถ้าเราใช้รูปแบบคำสั่งเป็น

ADD <src>... <dest>

หรือ

COPY <src>... <dest>

เราอาจจะพบข้อผิดพลาดดังนี้

lstat destdir/.filename: no such file or directory

วิธีแก้ไข

เพื่อหลีกเลี่ยงข้อผิดพลาดดังกล่าว แนะนำให้ใช้คำสั่ง ADD และ COPY ในอีกรูปแบบหนึ่ง ดังนี้

ADD ["<src>",... "<dest>"]

หรือ

COPY ["<src>",... "<dest>"]

ซึ่งโดยส่วนตัวแล้ว ผมคิดว่ารูปแบบนี้น่าใช้กว่ารูปแบบแรก เพราะนอกจากจะใช้คัดลอก Hidden File ได้แล้ว ก็ยังสามารถใช้รูปแบบนี้คัดลอกไฟล์ที่มี Whitespace (เว้นวรรค) ได้ด้วย

ข้อมูลเพิ่มเติม

แบ่งปันสิ่งนี้บน

วิธี build hping3 บน Ubuntu

โดยปกติบน Ubuntu คุณสามารถติดตั้ง hping3 ผ่าน repository ได้โดยใช้คำสั่ง apt หรือ apt-get อยู่แล้ว

แต่ถ้าคุณจะ build hping3 เอง อาจจะด้วยเหตุผลอะไรก็แล้วแต่ ให้คุณทำตามขั้นตอนด้านล่างนี้

1. ถ้าคุณยังไม่ได้ติดตั้งชุดเครื่องมือสำหรับ build ให้ติดตั้งก่อน โดยใช้คำสั่งนี้

sudo apt install -y build-essential

2. ติดตั้ง pcap development package

sudo apt install -y libpcap-dev
sudo ln -s /usr/include/pcap/bpf.h /usr/include/net/bpf.h

3. ติดตั้ง TCL development package

sudo apt install -y tcl-dev

4. ดาวน์โหลด source ไฟล์ hping3 จากเว็บไซต์ต้นฉบับ

wget http://www.hping.org/hping3-20051105.tar.gz

5. extract hping3 archive ที่เพิ่งดาวน์โหลดมา

tar xf hping3-20051105.tar.gz

6. ย้ายไปทำงานที่ไดเรกทอรี่ hping3 ที่เพิ่ง extract ออกมา

cd hping3-20051105

7. ถ้าคุณใช้ Ubuntu เวอร์ชั่น 64บิท คุณต้อง Patch ไฟล์ bytesex.h ก่อน

wget -O hping3-bytesex.h-64bit.patch https://git.io/vMsrB
patch bytesex.h hping3-bytesex.h-64bit.patch

8. รันสคริป configure เพื่อสร้าง Makefile ใหม่

./configure

9. build, strip และ ติดตั้ง hping3

make
make strip
sudo make install

ข้อมูลเพิ่มเติม

แบ่งปันสิ่งนี้บน

วิธีอัปเกรด PHPMailer สำหรับ WordPress

เงื่อนไขการอัปเกรด

การอัปเกรดด้วยวิธีต่อไปนี้ เป็นวิธีการอัปเกรดด้วย command line บน linux server

วิธีอัปเกรด

ย้ายไปทำงานที่ไดเรกทอรี่ของเว็บไซต์ WordPress ที่ต้องการอัปเกรด

cd /var/www/your-wordpress

ค้นหาไฟล์ที่มีคำว่า “phpmailer.php” อยู่ในชื่อไฟล์

find . -iname *phpmailer.php*

ตรวจสอบเวอร์ชั่น PHPMailer ของไฟล์ที่พบ

grep \$Version ./your-found-file # Result is public $Version = 'x.y.zz';

สำรองไฟล์เอาไว้เผื่ออยากดาวน์เกรดกลับมาเป็นเวอร์ชั่นเดิมทีหลัง

# WordPress Core
cp ./wp-includes/class-phpmailer.php ./wp-includes/class-phpmailer.php.bak
cp ./wp-includes/class-pop3.php ./wp-includes/class-pop3.php.bak
cp ./wp-includes/class-smtp.php ./wp-includes/class-smtp.php.bak

# WordPress Themes and Plugins
cp ./wp-content/plugins/your-plugin/class.phpmailer.php ./wp-content/plugins/your-plugin/class.phpmailer.php.bak
cp ./wp-content/themes/your-theme/class.phpmailer.php ./wp-content/themes/your-theme/class.phpmailer.php.bak

ดาวน์โหลด PHPMailer และไฟล์ที่เกี่ยวข้อง เวอร์ชั่นล่าสุดมาพักไว้ที่ไดเรกทอรี่ /tmp

wget -P /tmp https://raw.githubusercontent.com/PHPMailer/PHPMailer/master/class.phpmailer.php
wget -P /tmp https://raw.githubusercontent.com/PHPMailer/PHPMailer/master/class.pop3.php
wget -P /tmp https://raw.githubusercontent.com/PHPMailer/PHPMailer/master/class.smtp.php

เริ่มการอัปเกรดโดยการเขียนทับไฟล์เวอร์ชั่นเก่า ด้วยไฟล์ที่เราดาวน์โหลดมาพักไว้ในไดเรกทอรี่ /tmp

# WordPress Core
cp /tmp/class.phpmailer.php ./wp-includes/class-phpmailer.php
cp /tmp/class.pop3.php ./wp-includes/class-pop3.php
cp /tmp/class.smtp.php ./wp-includes/class-smtp.php

# WordPress Themes and Plugins
cp /tmp/class.phpmailer.php ./wp-content/plugins/your-plugin/class.phpmailer.php
cp /tmp/class.phpmailer.php ./wp-content/themes/your-theme/class.phpmailer.php

ตั้งค่าสิทธิ์ของไฟล์ที่เราเพิ่งอัปเกรด เพื่อให้โปรแกรม Web Server เข้าถึงไฟล์ได้อย่างถูกต้อง

# WordPress Core
chown www-data:www-data ./wp-includes/class-phpmailer.php
chown www-data:www-data ./wp-includes/class-pop3.php
chown www-data:www-data ./wp-includes/class-smtp.php

# WordPress Themes and Plugins
chown www-data:www-data ./wp-content/plugins/your-plugin/class.phpmailer.php
chown www-data:www-data ./wp-content/themes/your-theme/class.phpmailer.php

ข้อมูลเพิ่มเติม

แบ่งปันสิ่งนี้บน