Skip to content

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 āĻŸā§āϝāĻžāϗ⧇āϰ āωāĻĒāϰ āύāĻŋāĻ°ā§āĻ­āϰ āĻ•āϰāĻŦ⧇āύ āύāĻžāĨ¤ āĻāϟāĻŋ āφāĻĒāύāĻžāϰ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ⧇āϰ āĻ¸ā§āĻŸā§āϝāĻžāĻŦāĻŋāϞāĻŋāϟāĻŋ āύāĻˇā§āϟ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤

Released under the MIT License.