Menu

Friday, June 28, 2019

[Docker] วิธีการใช้ Git Tag เป็น Version ของ Code ใน Docker Image
[Docker] How to Use Git Tag as Version of Code in Docker Image

ในกรณีที่เราต้องการใช้ GIT Tag เพื่อแสดงเป็น Version บนหน้าเว็บ มีวิธีทำดังนี้

ขั้นแรก แก้ไข Dockerfile โดยเพิ่มบรรทัดตามด้านล่างนี้
ARG GIT_TAG=12345
ARG MAIN_FILE
RUN sed -i -e "s/version:\"0\.0\.0\"/version:\"${GIT_TAG}\"/" public/$MAIN_FILE
  • บรรทัดแรก เป็นการประกาศว่า เราจะรับตัวแปรชื่อ GIT_TAG ที่จะถูกส่งเข้ามาทาง build argument ตอนสั่ง docker build ซึ่งถ้าไม่มีค่าอะไรส่งเข้ามาเลย ให้ตั้งค่าตั้งต้นเป็น 12345
  • บรรทัดที่สอง เป็นการประกาศว่า เราจะรับตัวแปรชื่อ MAIN_FILE ที่จะถูกส่งเข้ามาทาง build argument
  • บรรทัดที่สุดท้าย เป็นการรันคำสั่งเพื่อ replace ค่า 0.0.0 ในไฟล์ MAIN_FILE ด้วยค่าของ GIT_TAG
ขั้นต่อไป แก้ไข bash command ให้ดึงค่า GIT Tag แล้วส่งเป็น build argument ตอนสั่ง build docker ตามโค้ดด้านล่าง
GIT_TAG=$(git describe --abbrev=0)
MAIN_FILE=$(grep -o 'main.[0-9a-z]*.js' ./public/index.html)
docker build --build-arg GIT_TAG=$GIT_TAG  --build-arg MAIN_FILE=$MAIN_FILE -t app .
  • บรรทัดแรก เป็นการรันคำสั่งเพื่อดึงค่า Annotated Tag ของ GIT แล้วเก็บใส่ตัวแปรชื่อ GIT_TAG 
  • บรรทัดที่สอง เป็นการรันคำสั่งเพื่อดึงชื่อไฟล์ภายใน index.html แล้วเก็บใส่ตัวแปรชื่อ MAIN_FILE
  • บรรทัดสุดท้าย เป็นการสั่ง build docker image โดยส่ง GIT_TAG และ MAIN_FILE เป็น build arguments

สำหรับข้อมูลเพิ่มเติม สามารถอ่านได้ที่
How to Use Variable in Bash
How to Pass Build Argument and Set Environment Variable
How to Get Substring in File that Match Regular Expression

No comments:

Post a Comment