DevOps 101 วันนี้ มาขอเล่าเรื่อง trick ง่ายๆ ในการ deploy docker images กันครับ
1. เรื่อง Time Zone โดยปกติแล้ว ถ้าเราไม่กำหนด ตัว container ที่ run จะเป็น UTC นะครับ ในตัวอย่าง ถ้าอยากให้ Time Zone ตรงกับบ้านเรา (UTC +7) เราสามารถ เข้าไป กำหนดได้ง่ายๆ ประมาณนี้ครับ
Dockerfile
FROM python:3.9
ENV TZ="Asia/Bangkok"
RUN date
Build
docker build -t dockertest .
Run
docker run -it dockertest -c "date"
ถ้าเป็น alpine based image จะต้อง install tzdata ก่อน ประมาณนี้ครับ
RUN apk add --no-cache tzdata
ENV TZ Asia/Bangkok
2. เวลา run docker ด้วย tag:latest แล้ว อาจจะมี การ cache บน local ทำให้ ไม่ได้ image ล่าสุด เราสามารถแก้ไขได้โดย ใส่ options –pull=always ตัวอย่างเช่น
docker run --pull=always
3. ถ้าอยาก run Jenkins Pipeliine แบบ trigger ด้วย cron เราสามารถเพิ่ม cron เข้าไปได้ ประมาณนี้
pipeline {
agent any
triggers {
cron('00 20 * * *')
}
stages {
stage('Hello') {
steps {
echo 'Hello World'
}
}
}
}
สำหรับการ Set Time Zone ในตัว Jenkins เอง ผมเคยเขียนรายละเอียดไว้แล้วครับ อ่านเพิ่มเติมได้ที่
https://ton.packetlove.com/blog/devops/devops-101-jenkins-set-time-zone.html
อันนี้เป็น trick เล็กๆ น้อยๆ ที่เอามาเล่าสู่กันฟังนะครับ ที่เจอตอน deploy app ที่เป็น docker images ด้วย Jenkins Pipeline 🙂