ขั้นแรก แก้ไข 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
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