Docker Image Tagging Strategy đˇī¸ â
āĻĄāĻāĻžāϰ āĻāĻŽā§āĻ āĻŽā§āϝāĻžāύā§āĻ āĻāϰāĻžāϰ āĻā§āώā§āϤā§āϰ⧠āϏāĻ āĻŋāĻ Tagging Strategy āĻ āύā§āϏāϰāĻŖ āĻāϰāĻž āĻ āϤā§āϝāύā§āϤ āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖāĨ¤ āĻāĻāĻŋ āĻāĻžā§āĻž āĻāĻžāϰā§āϏāύ āĻāύā§āĻā§āϰā§āϞ āĻāĻŦāĻ āĻĒā§āϰā§āĻĄāĻžāĻāĻļāύ āϰā§āϞāĻŦā§āϝāĻžāĻ āĻāϰāĻž āĻĒā§āϰāĻžā§ āĻ āϏāĻŽā§āĻāĻŦ āĻšā§ā§ āĻĒā§ā§āĨ¤
ā§§. āĻā§āύ āĻāĻŽā§āĻā§ āĻā§āϝāĻžāĻ (Tag) āĻĒā§āϰā§ā§āĻāύ? â
āĻā§āϝāĻžāĻ āĻšāϞ⧠āĻāĻāĻāĻŋ āĻāĻŽā§āĻā§āϰ āĻĄā§āϏāĻŋāĻāύā§āĻļāύ āĻŦāĻž āĻŽāĻžāϰā§āĻāĻžāϰāĨ¤ āĻāĻāĻŋ āĻāĻžā§āĻž āĻĄāĻāĻžāϰ āĻāĻā§āĻāĻŋāύ āĻŦā§āĻāϤ⧠āĻĒāĻžāϰ⧠āύāĻž āĻāĻĒāύāĻŋ āĻāĻŽā§āĻā§āϰ āĻā§āύ āĻāĻžāϰā§āϏāύāĻāĻŋ āĻāĻāĻ āĻāϰāϤ⧠āĻāĻžāĻā§āĻā§āύāĨ¤ āϏāĻ āĻŋāĻ āĻā§āϝāĻžāĻāĻŋāĻ āϏā§āĻā§āϰā§āĻā§āĻāĻŋ āĻĨāĻžāĻāϞ⧠āĻāĻĒāύāĻŋ āϏāĻšāĻā§āĻ āĻŦā§āĻāϤ⧠āĻĒāĻžāϰāĻŦā§āύ āĻā§āύ āĻāĻŽā§āĻāĻāĻŋ āĻā§āύ āĻāύāĻāĻžā§āϰāύāĻŽā§āύā§āĻ āĻŦāĻž āĻĢāĻŋāĻāĻžāϰā§āϰ āĻāύā§āϝ āϤā§āϰāĻŋāĨ¤
⧍. āĻāύāĻĒā§āϰāĻŋā§ āĻā§āϝāĻžāĻāĻŋāĻ āϏā§āĻā§āϰā§āĻā§āĻāĻŋ (Strategies) â
āĻ. Semantic Versioning (SemVer) â
āϏāĻĢāĻāĻā§ā§āϝāĻžāϰ āĻāĻā§āĻāĻŋāύāĻŋā§āĻžāϰāĻŋāĻā§ā§āϰ āϏā§āĻā§āϝāĻžāύā§āĻĄāĻžāϰā§āĻĄ āύāĻŋā§āĻŽāĨ¤ āĻĢāϰāĻŽā§āϝāĻžāĻ: MAJOR.MINOR.PATCH (āϝā§āĻŽāύ: v1.2.3)
- MAJOR: āϝāĻāύ āĻŦā§ āĻā§āύ⧠āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻšā§āĨ¤
- MINOR: āϝāĻāύ āύāϤā§āύ āĻā§āύ⧠āĻĢāĻŋāĻāĻžāϰ āϝā§āĻ āĻšā§ āĻāĻŋāύā§āϤ⧠āĻĒā§āϰāύ⧠āĻā§āĻĄā§āϰ āϏāĻžāĻĨā§ āϏāĻžāĻŽāĻā§āĻāϏā§āϝ āĻĨāĻžāĻā§āĨ¤
- PATCH: āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āĻŦāĻžāĻ āĻĢāĻŋāĻā§āϏā§āϰ āĻāύā§āϝāĨ¤
āĻ. Git Commit SHA â
āϏāĻŦāĻā§ā§ā§ āύāĻŋāĻā§āĻāϤ āĻĒāĻĻā§āϧāϤāĻŋ āĻšāϞ⧠āĻāĻŽā§āĻā§āϰ āϏāĻžāĻĨā§ āĻāĻŋāĻā§āϰ āĻāĻŽāĻŋāĻ āĻāĻāĻĄāĻŋ (Git SHA) āϝā§āĻ āĻāϰāĻžāĨ¤
- āĻāĻĻāĻžāĻšāϰāĻŖ:
my-app:8f9a2b4 - āϏā§āĻŦāĻŋāϧāĻž: āĻā§āύ⧠āϏāĻŽāϏā§āϝāĻž āĻšāϞ⧠āϏāĻšāĻā§āĻ āĻĄā§āϰāĻžāĻāĻ āĻāϰāĻž āϝāĻžā§ āĻā§āύ āĻāĻŽāĻŋāĻ āĻĨā§āĻā§ āĻāĻŽā§āĻāĻāĻŋ āϤā§āϰāĻŋ āĻšā§ā§āĻā§āĨ¤
āĻ. Build Number â
CI/CD āĻĒāĻžāĻāĻĒāϞāĻžāĻāύā§āϰ āĻŦāĻŋāϞā§āĻĄ āύāĻžāĻŽā§āĻŦāĻžāϰ āĻāĻāĻ āĻāϰāĻžāĨ¤
- āĻāĻĻāĻžāĻšāϰāĻŖ:
my-app:build-205
āĻ. Environment Tags â
āĻāύāĻāĻžā§āϰāύāĻŽā§āύā§āĻ āĻ āύā§āϝāĻžā§ā§ āĻā§āϝāĻžāĻ āĻāϰāĻžāĨ¤
- āĻāĻĻāĻžāĻšāϰāĻŖ:
prod-v1.0,staging-latest,dev
ā§Š. latest āĻā§āϝāĻžāĻā§āϰ āĻā§āĻāĻāĻŋ (Pros and Cons) â
āĻĄāĻāĻžāϰ āĻĄāĻŋāĻĢāϞā§āĻāĻāĻžāĻŦā§ latest āĻā§āϝāĻžāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āĨ¤
- Pros: āϏāĻŦ āϏāĻŽā§ āϞā§āĻā§āϏā§āĻ āĻāĻĒāĻŋ āĻĒāĻžāĻā§āĻž āϝāĻžā§āĨ¤
- Cons: āĻāĻāĻŋ "Immutable" āύā§āĨ¤ āĻāĻāĻā§ āϝāĻž
latest, āĻāĻžāϞ āϤāĻž āĻ āύā§āϝāĻāĻŋāĻā§ āĻšāϤ⧠āĻĒāĻžāϰā§āĨ¤ āĻĒā§āϰā§āĻĄāĻžāĻāĻļāύā§latestāĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϞ⧠āĻšāĻ āĻžā§ āĻāϰ⧠āĻ ā§āϝāĻžāĻĒ āĻŦā§āϰā§āĻ āĻšāϤ⧠āĻĒāĻžāϰ⧠āĻāĻŦāĻ āϰā§āϞāĻŦā§āϝāĻžāĻ āĻāϰāĻž āĻāĻ āĻŋāύ āĻšā§āĨ¤
āĻŦā§āϏā§āĻ āĻĒā§āϰā§āϝāĻžāĻāĻāĻŋāϏ: āĻĒā§āϰā§āĻĄāĻžāĻāĻļāύ⧠āϏāĻŦ āϏāĻŽā§ āϏā§āĻĒā§āϏāĻŋāĻĢāĻŋāĻ āĻāĻžāϰā§āϏāύ āĻā§āϝāĻžāĻ (āϝā§āĻŽāύ: v1.2.0) āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύāĨ¤
ā§Ē. Immutable Tags â
āĻāĻāĻāĻŋ āĻāĻžāϞ⧠āϏā§āĻā§āϰā§āĻā§āĻāĻŋ āĻšāϞ⧠āĻāĻŽā§āĻā§āϰ āĻā§āϝāĻžāĻ āĻāĻāύā§āĻ āĻāĻāĻžāϰāϰāĻžāĻāĻ āύāĻž āĻāϰāĻžāĨ¤ āĻĒā§āϰāϤāĻŋāĻŦāĻžāϰ āĻŦāĻŋāϞā§āĻĄ āĻāϰāĻžāϰ āϏāĻŽā§ āύāϤā§āύ āĻāĻāĻāĻŋ āĻāĻāύāĻŋāĻ āĻā§āϝāĻžāĻ āĻĻā§āĻā§āĻž āĻāĻāĻŋāϤāĨ¤ āĻāĻā§ āĻŦāϞāĻž āĻšā§ Immutable TaggingāĨ¤
ā§Ģ. āĻā§āϝāĻžāĻ āύā§āĻŽāĻŋāĻ āĻāύāĻā§āύāĻļāύ (Naming Conventions) â
- āĻā§āĻ āĻšāĻžāϤā§āϰ āĻ āĻā§āώāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ (Lowercase)āĨ¤
- āϏā§āĻĒā§āĻļāĻžāϞ āĻā§āϝāĻžāϰā§āĻā§āĻāĻžāϰ āĻšāĻŋāϏā§āĻŦā§ āĻšāĻžāĻāĻĢā§āύ (
-) āĻŦāĻž āĻĄāĻ (.) āĻāĻāĻ āĻāϰā§āύāĨ¤ - āĻā§āϝāĻžāĻ āϝā§āύ āĻā§āĻ āĻāĻŦāĻ āĻ āϰā§āĻĨāĻĒā§āϰā§āĻŖ āĻšā§āĨ¤
- āĻāĻĻāĻžāĻšāϰāĻŖ:
app-web-v1.2-stable
āϏāĻžāϰāϏāĻāĻā§āώā§āĻĒ (Summary) â
āĻāĻāĻāĻŋ āĻā§āĻāĻžāύ⧠āĻā§āϝāĻžāĻāĻŋāĻ āϏā§āĻā§āϰā§āĻā§āĻāĻŋ āĻāĻĒāύāĻžāϰ CI/CD āĻĒāĻžāĻāĻĒāϞāĻžāĻāύāĻā§ āĻāϰāĻ āĻļāĻā§āϤāĻŋāĻļāĻžāϞ⧠āĻāϰ⧠āĻāĻŦāĻ āĻĒā§āϰā§āĻĄāĻžāĻāĻļāύ āĻāύāĻāĻžā§āϰāύāĻŽā§āύā§āĻā§ āĻā§āϞ āĻšāĻā§āĻžāϰ āϏāĻŽā§āĻāĻžāĻŦāύāĻž āĻāĻŽāĻŋā§ā§ āĻĻā§ā§āĨ¤ āϏāĻŦ āϏāĻŽā§ SemVer āĻ āĻĨāĻŦāĻž Git SHA āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻžāϰ āĻā§āώā§āĻāĻž āĻāϰā§āύāĨ¤
CAUTION
āĻĒā§āϰā§āĻĄāĻžāĻāĻļāύ⧠āĻāĻāύā§āĻ āĻļā§āϧ⧠latest āĻā§āϝāĻžāĻā§āϰ āĻāĻĒāϰ āύāĻŋāϰā§āĻāϰ āĻāϰāĻŦā§āύ āύāĻžāĨ¤ āĻāĻāĻŋ āĻāĻĒāύāĻžāϰ āĻ
ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύā§āϰ āϏā§āĻā§āϝāĻžāĻŦāĻŋāϞāĻŋāĻāĻŋ āύāώā§āĻ āĻāϰāϤ⧠āĻĒāĻžāϰā§āĨ¤