āĻĄāĻ•āĻžāĻ° āĻ°āĻšāĻ¨āĻž: āĻ‰āĻ¨ā§āĻ¨āĻ¯āĻŧāĻ¨ āĻĨā§‡āĻ•ā§‡ āĻ‰āĻ¤ā§āĻĒāĻžāĻĻāĻ¨

āĻ•ā§‹āĻ°ā§āĻ¸ āĻļā§āĻ°ā§āĻ° āĻĒā§āĻ°āĻ¤ā§āĻ¯āĻžāĻļāĻžāĻ¯āĻŧ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤ āĻ•āĻ°āĻž āĻĒāĻĄāĻ•āĻžāĻ¸ā§āĻŸā§‡āĻ° āĻŸā§āĻ°āĻžāĻ¨ā§āĻ¸āĻ•ā§āĻ°āĻŋāĻĒāĻļāĻ¨ā§‡āĻ° āĻ…āĻ¨ā§āĻŦāĻžāĻĻ "āĻ˛āĻŋāĻ¨āĻžāĻ•ā§āĻ¸ āĻĒā§āĻ°āĻļāĻžāĻ¸āĻ•"

āĻĄāĻ•āĻžāĻ° āĻ°āĻšāĻ¨āĻž: āĻ‰āĻ¨ā§āĻ¨āĻ¯āĻŧāĻ¨ āĻĨā§‡āĻ•ā§‡ āĻ‰āĻ¤ā§āĻĒāĻžāĻĻāĻ¨

āĻĄāĻ•āĻžāĻ° āĻ•āĻŽā§āĻĒā§‹āĻœ āĻĄā§‡āĻ¸ā§āĻ•āĻŸāĻĒ āĻ¤ā§ˆāĻ°āĻŋāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ†āĻļā§āĻšāĻ°ā§āĻ¯āĻœāĻ¨āĻ• āĻŸā§āĻ˛
āĻ†āĻĒāĻ¨āĻžāĻ° āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ā§‡ āĻŦā§āĻ¯āĻŦāĻšā§ƒāĻ¤ āĻ¸ā§āĻŸā§āĻ¯āĻžāĻ•ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻĒāĻ°āĻŋāĻŦā§‡āĻļāĨ¤ āĻāĻŸāĻŋ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ¸āĻ‚āĻœā§āĻžāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻ•āĻ°āĻ¤ā§‡ āĻĻā§‡āĻ¯āĻŧ
āĻ†āĻĒāĻ¨āĻžāĻ° āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ā§‡āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻ‰āĻĒāĻžāĻĻāĻžāĻ¨, āĻāĻ•āĻŸāĻŋ āĻĒāĻ°āĻŋāĻˇā§āĻ•āĻžāĻ° āĻāĻŦāĻ‚ āĻ¸āĻšāĻœ āĻ¸āĻŋāĻ¨āĻŸā§āĻ¯āĻžāĻ•ā§āĻ¸ āĻ…āĻ¨ā§āĻ¸āĻ°āĻŖ āĻ•āĻ°ā§‡ YAML-
āĻ¨āĻĨāĻŋ āĻĒāĻ¤ā§āĻ°
.

āĻāĻ° āĻ†āĻŦāĻŋāĻ°ā§āĻ­āĻžāĻŦā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻĄāĻ•āĻžāĻ° āĻ°āĻšāĻ¨āĻž v3 āĻāĻ‡ YAML āĻĢāĻžāĻ‡āĻ˛āĻ—ā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ āĻ‰āĻ¤ā§āĻĒāĻžāĻĻāĻ¨ āĻĒāĻ°āĻŋāĻŦā§‡āĻļā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡
āĻ•ā§āĻ˛āĻžāĻ¸ā§āĻŸāĻžāĻ° āĻĄāĻ•āĻžāĻ° āĻ¸ā§‹āĻ°ā§āĻŽ.

āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻāĻ° āĻŽāĻžāĻ¨ā§‡ āĻ•āĻŋ āĻ†āĻĒāĻ¨āĻŋ āĻāĻ•āĻ‡ āĻĄāĻ•āĻžāĻ°-āĻ•āĻŽā§āĻĒā§‹āĻœ āĻĢāĻžāĻ‡āĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨
āĻ‰āĻ¨ā§āĻ¨āĻ¯āĻŧāĻ¨ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻŦāĻ‚ āĻ‰āĻ¤ā§āĻĒāĻžāĻĻāĻ¨ āĻĒāĻ°āĻŋāĻŦā§‡āĻļ? āĻ…āĻĨāĻŦāĻž āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻ‡ āĻĢāĻžāĻ‡āĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§āĻ¨
āĻŽāĻžā§āĻšāĻžāĻ¯āĻŧāĻ¨? āĻ āĻŋāĻ• āĻ†āĻ›ā§‡, āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ­āĻžāĻŦā§‡, āĻšā§āĻ¯āĻžāĻ, āĻ¤āĻŦā§‡ āĻāĻ‡ āĻœāĻžāĻ¤ā§€āĻ¯āĻŧ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻžāĻ°āĻŋāĻ¤āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻ–āĻŋāĻ¤āĻ—ā§āĻ˛āĻŋāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨:

  • āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻļā§€āĻ˛ āĻ‡āĻ¨ā§āĻŸāĻžāĻ°āĻĒā§‹āĻ˛ā§‡āĻļāĻ¨: āĻ•āĻŋāĻ›ā§ āĻœāĻ¨ā§āĻ¯ āĻĒāĻ°āĻŋāĻŦā§‡āĻļ āĻ­ā§‡āĻ°āĻŋāĻ¯āĻŧā§‡āĻŦāĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡
    āĻŽāĻžāĻ¨ āĻ¯āĻž āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻĒāĻ°āĻŋāĻŦā§‡āĻļā§‡ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻŋāĻ¤ āĻšāĻ¯āĻŧāĨ¤
  • āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ°ā§‡āĻļāĻ¨ āĻ“āĻ­āĻžāĻ°āĻ°āĻžāĻ‡āĻĄ: āĻāĻ•āĻŸāĻŋ āĻ¸ā§‡āĻ•ā§‡āĻ¨ā§āĻĄ āĻ¸āĻ‚āĻœā§āĻžāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻ•āĻ°āĻžāĻ° āĻ•ā§āĻˇāĻŽāĻ¤āĻž (āĻŦāĻž āĻ¯ā§‡āĻ•ā§‹āĻ¨ā§‹
    āĻ†āĻ°ā§‡āĻ•āĻŸāĻŋ āĻĢāĻ˛ā§‹-āĻ†āĻĒ) āĻĄāĻ•āĻžāĻ°-āĻ•āĻŽā§āĻĒā§‹āĻœ āĻĢāĻžāĻ‡āĻ˛ āĻ¯āĻž āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•āĻŋāĻ¤ āĻ•āĻŋāĻ›ā§ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°āĻŦā§‡
    āĻĒā§āĻ°āĻĨāĻŽāĻŸāĻŋ, āĻāĻŦāĻ‚ āĻĄāĻ•āĻžāĻ° āĻ•āĻŽā§āĻĒā§‹āĻœ āĻ‰āĻ­āĻ¯āĻŧ āĻĢāĻžāĻ‡āĻ˛ āĻŽāĻžāĻ°ā§āĻœ āĻ•āĻ°āĻžāĻ° āĻ¯āĻ¤ā§āĻ¨ āĻ¨ā§‡āĻŦā§‡āĨ¤

āĻ‰āĻ¨ā§āĻ¨āĻ¯āĻŧāĻ¨ āĻāĻŦāĻ‚ āĻ‰āĻ¤ā§āĻĒāĻžāĻĻāĻ¨ āĻĢāĻžāĻ‡āĻ˛ āĻŽāĻ§ā§āĻ¯ā§‡ āĻĒāĻžāĻ°ā§āĻĨāĻ•ā§āĻ¯

āĻŦāĻŋāĻ•āĻžāĻļā§‡āĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻ†āĻĒāĻ¨āĻŋ āĻ¸āĻŽā§āĻ­āĻŦāĻ¤ āĻ•ā§‹āĻĄ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻ—ā§āĻ˛āĻŋ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ‡āĻŦā§‡āĻ¨ā§ˇ
āĻ°āĻŋāĻ¯āĻŧā§‡āĻ˛ āĻŸāĻžāĻ‡āĻŽ āĻŽā§‹āĻĄāĨ¤ āĻāĻŸāĻŋ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯, āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤, āĻ¸ā§‹āĻ°ā§āĻ¸ āĻ•ā§‹āĻĄ āĻ¸āĻš āĻ­āĻ˛āĻŋāĻ‰āĻŽāĻŸāĻŋ āĻŽāĻžāĻ‰āĻ¨ā§āĻŸ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ
āĻāĻ•āĻŸāĻŋ āĻ§āĻžāĻ°āĻ• āĻ¯āĻž āĻ†āĻĒāĻ¨āĻžāĻ° āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ°āĻžāĻ¨āĻŸāĻžāĻ‡āĻŽ āĻ§āĻžāĻ°āĻŖ āĻ•āĻ°ā§‡āĨ¤ āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ‰ā§ŽāĻĒāĻžāĻĻāĻ¨ āĻĒāĻ°āĻŋāĻŦā§‡āĻļā§‡āĻ° āĻœāĻ¨ā§āĻ¯
āĻāĻ‡ āĻ‰āĻĒāĻžāĻ¯āĻŧ āĻ‰āĻĒāĻ¯ā§āĻ•ā§āĻ¤ āĻ¨āĻ¯āĻŧāĨ¤

āĻ‰āĻ¤ā§āĻĒāĻžāĻĻāĻ¨ā§‡ āĻ†āĻĒāĻ¨āĻžāĻ° āĻāĻ•āĻŸāĻŋ āĻŽāĻžāĻ˛ā§āĻŸāĻŋ-āĻ¨ā§‹āĻĄ āĻ•ā§āĻ˛āĻžāĻ¸ā§āĻŸāĻžāĻ° āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ āĻāĻŦāĻ‚ āĻ­āĻ˛āĻŋāĻ‰āĻŽ āĻ¸ā§āĻĨāĻžāĻ¨ā§€āĻ¯āĻŧ
āĻšā§‹āĻ¸ā§āĻŸā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•āĻŋāĻ¤ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ•āĻ¨ā§āĻŸā§‡āĻ‡āĻ¨āĻžāĻ° (āĻŦāĻž āĻĒāĻ°āĻŋāĻˇā§‡āĻŦāĻž) āĻšāĻ˛āĻ›ā§‡, āĻ¤āĻžāĻ‡ āĻ†āĻĒāĻ¨āĻŋ āĻ¤āĻž āĻ•āĻ°āĻ›ā§‡āĻ¨ āĻ¨āĻž
āĻ†āĻĒāĻ¨āĻŋ āĻœāĻŸāĻŋāĻ˛ āĻ…āĻĒāĻžāĻ°ā§‡āĻļāĻ¨ āĻ›āĻžāĻĄāĻŧāĻžāĻ‡ āĻ¸ā§‹āĻ°ā§āĻ¸ āĻ•ā§‹āĻĄ āĻŽāĻžāĻ‰āĻ¨ā§āĻŸ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨, āĻ¯āĻžāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡
āĻ•ā§‹āĻĄ āĻ¸āĻŋāĻ™ā§āĻ•ā§āĻ°ā§‹āĻ¨āĻžāĻ‡āĻœā§‡āĻļāĻ¨, āĻ¸āĻ‚āĻ•ā§‡āĻ¤, āĻ‡āĻ¤ā§āĻ¯āĻžāĻĻāĻŋ

āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§‡, āĻ†āĻŽāĻ°āĻž āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ•ā§‹āĻĄā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ āĻĻāĻŋāĻ¯āĻŧā§‡ āĻāĻ•āĻŸāĻŋ āĻ›āĻŦāĻŋ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ‡āĨ¤
āĻāĻŸāĻŋ āĻ‰āĻĒāĻ¯ā§āĻ•ā§āĻ¤ āĻŸā§āĻ¯āĻžāĻ— āĻĻāĻŋāĻ¯āĻŧā§‡ āĻšāĻŋāĻšā§āĻ¨āĻŋāĻ¤ āĻ•āĻ°āĻž āĻĒā§āĻ°āĻĨāĻžāĻ—āĻ¤ (āĻ†āĻĒāĻ¨āĻŋ āĻļāĻŦā§āĻĻāĻžāĻ°ā§āĻĨāĻ• āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨
āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ āĻŦāĻž āĻ†āĻĒāĻ¨āĻžāĻ° āĻĒāĻ›āĻ¨ā§āĻĻā§‡āĻ° āĻ…āĻ¨ā§āĻ¯ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽ)āĨ¤

āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ°ā§‡āĻļāĻ¨ āĻ“āĻ­āĻžāĻ°āĻ°āĻžāĻ‡āĻĄ

āĻĒāĻžāĻ°ā§āĻĨāĻ•ā§āĻ¯āĻ—ā§āĻ˛āĻŋ āĻĻā§‡āĻ“āĻ¯āĻŧāĻž āĻāĻŦāĻ‚ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ¨āĻŋāĻ°ā§āĻ­āĻ°āĻ¤āĻž āĻĒāĻ°āĻŋāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋāĻ¤ā§‡ āĻ­āĻŋāĻ¨ā§āĻ¨ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡
āĻ‰āĻ¨ā§āĻ¨āĻ¯āĻŧāĻ¨ āĻāĻŦāĻ‚ āĻ‰āĻ¤ā§āĻĒāĻžāĻĻāĻ¨, āĻāĻŸāĻž āĻ¸ā§āĻĒāĻˇā§āĻŸ āĻ¯ā§‡ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ°ā§‡āĻļāĻ¨ āĻĢāĻžāĻ‡āĻ˛ā§‡āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻšāĻŦā§‡āĨ¤

āĻĄāĻ•āĻžāĻ° āĻ•āĻŽā§āĻĒā§‹āĻœ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻ•āĻŽā§āĻĒā§‹āĻœ āĻĢāĻžāĻ‡āĻ˛ āĻāĻ•āĻ¤ā§āĻ°āĻŋāĻ¤ āĻ•āĻ°āĻž āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ•āĻ°ā§‡
āĻšā§‚āĻĄāĻŧāĻžāĻ¨ā§āĻ¤ āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ°ā§‡āĻļāĻ¨ āĻĒāĻžāĻ¨āĨ¤ āĻāĻŸāĻŋ āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡ āĻ¤āĻž āĻāĻ•āĻŸāĻŋ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖā§‡ āĻĻā§‡āĻ–āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡:

$ cat docker-compose.yml
version: "3.2"

services:
  whale:
    image: docker/whalesay
    command: ["cowsay", "hello!"]
$ docker-compose up
Creating network "composeconfigs_default" with the default driver
Starting composeconfigs_whale_1
Attaching to composeconfigs_whale_1
whale_1  |  ________
whale_1  | < hello! >
whale_1  |  --------
whale_1  |     
whale_1  |      
whale_1  |       
whale_1  |                     ##        .
whale_1  |               ## ## ##       ==
whale_1  |            ## ## ## ##      ===
whale_1  |        /""""""""""""""""___/ ===
whale_1  |   ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~
whale_1  |        ______ o          __/
whale_1  |                     __/
whale_1  |           __________/
composeconfigs_whale_1 exited with code 0

āĻ¯ā§‡āĻŽāĻ¨ āĻŦāĻ˛āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡, āĻĄāĻ•āĻžāĻ° āĻ•āĻŽā§āĻĒā§‹āĻœ āĻāĻ•āĻžāĻ§āĻŋāĻ• āĻ•āĻŽā§āĻĒā§‹āĻœ āĻŽāĻžāĻ°ā§āĻœ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ•āĻ°ā§‡-
āĻĢāĻžāĻ‡āĻ˛, āĻāĻŸāĻŋ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻĻā§āĻŦāĻŋāĻ¤ā§€āĻ¯āĻŧ āĻĢāĻžāĻ‡āĻ˛ā§‡āĻ° āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻ…āĻĒāĻļāĻ¨ āĻ“āĻ­āĻžāĻ°āĻ°āĻžāĻ‡āĻĄ āĻ•āĻ°āĻ¤ā§‡ āĻĻā§‡āĻ¯āĻŧāĨ¤ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻ¸ā§āĻŦāĻ°ā§‚āĻĒ:

$ cat docker-compose.second.yml
version: "3.2"
services:
  whale:
    command: ["cowsay", "bye!"]

$ docker-compose -f docker-compose.yml -f docker-compose.second.yml up
Creating composeconfigs_whale_1
Attaching to composeconfigs_whale_1
whale_1  |  ______
whale_1  | < bye! >
whale_1  |  ------
whale_1  |     
whale_1  |      
whale_1  |       
whale_1  |                     ##        .
whale_1  |               ## ## ##       ==
whale_1  |            ## ## ## ##      ===
whale_1  |        /""""""""""""""""___/ ===
whale_1  |   ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~
whale_1  |        ______ o          __/
whale_1  |                     __/
whale_1  |           __________/
composeconfigs_whale_1 exited with code 0

āĻāĻ‡ āĻ¸āĻŋāĻ¨āĻŸā§āĻ¯āĻžāĻ•ā§āĻ¸ āĻ‰āĻ¨ā§āĻ¨āĻ¯āĻŧāĻ¨ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ¯āĻŧ āĻ–ā§āĻŦ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻœāĻ¨āĻ• āĻ¨āĻ¯āĻŧ, āĻ¯āĻ–āĻ¨ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ
āĻāĻ•āĻžāĻ§āĻŋāĻ•āĻŦāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤

āĻ¸ā§ŒāĻ­āĻžāĻ—ā§āĻ¯āĻŦāĻļāĻ¤, āĻĄāĻ•āĻžāĻ° āĻ•āĻŽā§āĻĒā§‹āĻœ āĻ¸ā§āĻŦāĻ¯āĻŧāĻ‚āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻ­āĻžāĻŦā§‡ āĻ¨āĻžāĻŽāĻ• āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻļā§‡āĻˇ āĻĢāĻžāĻ‡āĻ˛ā§‡āĻ° āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻ•āĻ°ā§‡
docker-compose.override.yml āĻŽāĻžāĻ¨ āĻ“āĻ­āĻžāĻ°āĻ°āĻžāĻ‡āĻĄ āĻ•āĻ°āĻ¤ā§‡ Docker-compose.ymlāĨ¤ āĻ¯āĻĻāĻŋ
āĻĻā§āĻŦāĻŋāĻ¤ā§€āĻ¯āĻŧ āĻĢāĻžāĻ‡āĻ˛ā§‡āĻ° āĻ¨āĻžāĻŽ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°ā§āĻ¨, āĻ†āĻĒāĻ¨āĻŋ āĻāĻ•āĻ‡ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻĒāĻžāĻŦā§‡āĻ¨, āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻŽā§‚āĻ˛ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡:

$ mv docker-compose.second.yml docker-compose.override.yml
$ docker-compose up
Starting composeconfigs_whale_1
Attaching to composeconfigs_whale_1
whale_1  |  ______
whale_1  | < bye! >
whale_1  |  ------
whale_1  |     
whale_1  |      
whale_1  |       
whale_1  |                     ##        .
whale_1  |               ## ## ##       ==
whale_1  |            ## ## ## ##      ===
whale_1  |        /""""""""""""""""___/ ===
whale_1  |   ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~
whale_1  |        ______ o          __/
whale_1  |                     __/
whale_1  |           __________/
composeconfigs_whale_1 exited with code 0

āĻ āĻŋāĻ• āĻ†āĻ›ā§‡, āĻāĻŸāĻž āĻŽāĻ¨ā§‡ āĻ°āĻžāĻ–āĻž āĻ¸āĻšāĻœāĨ¤

āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻļā§€āĻ˛ āĻ‡āĻ¨ā§āĻŸāĻžāĻ°āĻĒā§‹āĻ˛ā§‡āĻļāĻ¨

āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ°ā§‡āĻļāĻ¨ āĻĢāĻžāĻ‡āĻ˛ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ‡āĻ¨ā§āĻŸāĻžāĻ°āĻĒā§‹āĻ˛ā§‡āĻļāĻ¨
āĻ­ā§‡āĻ°āĻŋāĻ¯āĻŧā§‡āĻŦāĻ˛
āĻāĻŦāĻ‚ āĻĄāĻŋāĻĢāĻ˛ā§āĻŸ āĻŽāĻžāĻ¨āĨ¤ āĻ…āĻ°ā§āĻĨāĻžā§Ž, āĻ†āĻĒāĻ¨āĻŋ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻ–āĻŋāĻ¤āĻ—ā§āĻ˛āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨:

services:
  my-service:
    build:
      context: .
    image: private.registry.mine/my-stack/my-service:${MY_SERVICE_VERSION:-latest}
...

āĻ†āĻ° āĻ¯āĻĻāĻŋ āĻ•āĻ°ā§‡āĻ¨ āĻĄāĻ•āĻžāĻ°-āĻ•āĻŽā§āĻĒā§‹āĻœ āĻŦāĻŋāĻ˛ā§āĻĄ (āĻŦāĻž āĻĒā§āĻļ) āĻĒāĻ°āĻŋāĻŦā§‡āĻļ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻļā§€āĻ˛ āĻ›āĻžāĻĄāĻŧāĻž
$MY_SERVICE_VERSION, āĻŽāĻžāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻŦā§‡ āĻ¸āĻ°ā§āĻŦāĻļā§‡āĻˇāĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ¯āĻĻāĻŋ āĻ†āĻĒāĻ¨āĻŋ āĻ¸ā§‡āĻŸ
āĻŦāĻŋāĻ˛ā§āĻĄ āĻ•āĻ°āĻžāĻ° āĻ†āĻ—ā§‡ āĻāĻ¨āĻ­āĻžāĻ¯āĻŧāĻ°āĻ¨āĻŽā§‡āĻ¨ā§āĻŸ āĻ­ā§‡āĻ°āĻŋāĻ¯āĻŧā§‡āĻŦāĻ˛ā§‡āĻ° āĻŽāĻžāĻ¨, āĻāĻŸāĻŋ āĻŦāĻŋāĻ˛ā§āĻĄāĻŋāĻ‚ āĻŦāĻž āĻĒā§āĻļ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻŦā§‡
āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻ¨ āĻ•āĻ°āĻ¤ā§‡ private.registry.mine.

āĻ†āĻŽāĻžāĻ° āĻ¨ā§€āĻ¤āĻŋ

āĻ†āĻŽāĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻœāĻ¨āĻ• āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻ†āĻĒāĻ¨āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻĻāĻ°āĻ•āĻžāĻ°ā§€ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡. āĻ†āĻŽāĻŋ āĻāĻŸāĻŋ āĻ…āĻ¨ā§āĻ¸āĻ°āĻŖ āĻ•āĻ°āĻŋ
āĻ¸āĻšāĻœ āĻ¨āĻŋāĻ¯āĻŧāĻŽ:

  • āĻ‰ā§ŽāĻĒāĻžāĻĻāĻ¨, āĻ‰āĻ¨ā§āĻ¨āĻ¯āĻŧāĻ¨ (āĻŦāĻž āĻ…āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻĒāĻ°āĻŋāĻŦā§‡āĻļā§‡āĻ°) āĻœāĻ¨ā§āĻ¯ āĻ†āĻŽāĻžāĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ¸ā§āĻŸā§āĻ¯āĻžāĻ• āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻ¸āĻ‚āĻœā§āĻžāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ
    āĻĄāĻ•āĻžāĻ°-āĻ•āĻŽā§āĻĒā§‹āĻœ āĻĢāĻžāĻ‡āĻ˛āĨ¤
  • āĻ†āĻŽāĻžāĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĒāĻ°āĻŋāĻŦā§‡āĻļāĻ•ā§‡ āĻ•āĻ­āĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧ āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ°ā§‡āĻļāĻ¨ āĻĢāĻžāĻ‡āĻ˛, āĻ¸āĻ°ā§āĻŦā§‹āĻšā§āĻšāĨ¤
    āĻ…āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ āĻāĻĄāĻŧāĻžāĻ¤ā§‡.
  • āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻĒāĻ°āĻŋāĻŦā§‡āĻļā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻŽāĻžāĻ° āĻāĻ•āĻŸāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻĻāĻ°āĻ•āĻžāĻ°āĨ¤
  • āĻŽā§‚āĻ˛ āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ°ā§‡āĻļāĻ¨ āĻĢāĻžāĻ‡āĻ˛ā§‡ āĻ¸āĻ‚āĻœā§āĻžāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ Docker-compose.yml.
  • āĻāĻ¨āĻ­āĻžāĻ¯āĻŧāĻ°āĻ¨āĻŽā§‡āĻ¨ā§āĻŸ āĻ­ā§‡āĻ°āĻŋāĻ¯āĻŧā§‡āĻŦāĻ˛ āĻ‡āĻŽā§‡āĻœ āĻŸā§āĻ¯āĻžāĻ— āĻŦāĻž āĻ…āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ¸āĻ‚āĻœā§āĻžāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻ•āĻ°āĻ¤ā§‡ āĻŦā§āĻ¯āĻŦāĻšā§ƒāĻ¤ āĻšāĻ¯āĻŧ
    āĻ­ā§‡āĻ°āĻŋāĻ¯āĻŧā§‡āĻŦāĻ˛ āĻ¯āĻž āĻĒāĻ°āĻŋāĻŦā§‡āĻļ āĻĨā§‡āĻ•ā§‡ āĻĒāĻ°āĻŋāĻŦā§‡āĻļā§‡ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻŋāĻ¤ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ (āĻŽāĻžā§āĻšāĻžāĻ¯āĻŧāĻ¨, āĻ‡āĻ¨ā§āĻŸāĻŋāĻ—ā§āĻ°ā§‡āĻļāĻ¨,
    āĻ‰āĻ¤ā§āĻĒāĻžāĻĻāĻ¨)āĨ¤
  • āĻ‰āĻ¤ā§āĻĒāĻžāĻĻāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ­ā§‡āĻ°āĻŋāĻ¯āĻŧā§‡āĻŦāĻ˛ā§‡āĻ° āĻŽāĻžāĻ¨āĻ—ā§āĻ˛āĻŋ āĻĻā§āĻŦāĻžāĻ°āĻž āĻŽāĻžāĻ¨ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻŦā§āĻ¯āĻŦāĻšā§ƒāĻ¤ āĻšāĻ¯āĻŧ
    āĻĄāĻŋāĻĢāĻ˛ā§āĻŸāĻ°ā§‚āĻĒā§‡, āĻ†āĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻ›āĻžāĻĄāĻŧāĻž āĻ‰ā§ŽāĻĒāĻžāĻĻāĻ¨ā§‡ āĻ¸ā§āĻŸā§āĻ¯āĻžāĻ• āĻšāĻžāĻ˛āĻžāĻ¨ āĻ¤āĻžāĻšāĻ˛ā§‡ āĻāĻŸāĻŋ āĻā§āĻāĻ•āĻŋ āĻ•āĻŽāĻŋāĻ¯āĻŧā§‡ āĻĻā§‡āĻ¯āĻŧ
    āĻĒāĻ°āĻŋāĻŦā§‡āĻļ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻļā§€āĻ˛ āĻ¸ā§‡āĻŸ āĻ•āĻ°ā§āĻ¨āĨ¤
  • āĻāĻ•āĻŸāĻŋ āĻ‰āĻ¤ā§āĻĒāĻžāĻĻāĻ¨ āĻĒāĻ°āĻŋāĻŦā§‡āĻļā§‡ āĻāĻ•āĻŸāĻŋ āĻĒāĻ°āĻŋāĻˇā§‡āĻŦāĻž āĻļā§āĻ°ā§ āĻ•āĻ°āĻ¤ā§‡, āĻ•āĻŽāĻžāĻ¨ā§āĻĄāĻŸāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§āĻ¨ āĻĄāĻ•āĻžāĻ° āĻ¸ā§āĻŸā§āĻ¯āĻžāĻ• āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ - āĻ•āĻŽā§āĻĒā§‹āĻœ-āĻĢāĻžāĻ‡āĻ˛ docker-compose.yml - with-registry-auth my-stack-name.
  • āĻ•āĻžāĻœā§‡āĻ° āĻĒāĻ°āĻŋāĻŦā§‡āĻļ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻĻāĻŋāĻ¯āĻŧā§‡ āĻļā§āĻ°ā§ āĻšāĻ¯āĻŧ āĻĄāĻ•āĻžāĻ°-āĻ°āĻšāĻ¨āĻž āĻ†āĻĒ-āĻĄāĻŋ.

āĻāĻ° āĻāĻ•āĻŸāĻŋ āĻ¸āĻšāĻœ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻ¤āĻžāĻ•āĻžāĻ¨.

# docker-compose.yml
...
services:
  my-service:
    build:
      context: .
    image: private.registry.mine/my-stack/my-service:${MY_SERVICE_VERSION:-latest}
    environment:
      API_ENDPOINT: ${API_ENDPOINT:-https://production.my-api.com}
...

И

# docker-compose.override.yml
...
services:
  my-service:
    ports: # This is needed for development!
      - 80:80
    environment:
      API_ENDPOINT: https://devel.my-api.com
    volumes:
      - ./:/project/src
...

āĻ†āĻŽāĻŋ āĻŦā§āĻ¯āĻžāĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋ āĻĄāĻ•āĻžāĻ°-āĻ•āĻŽā§āĻĒā§‹āĻœ (āĻĄāĻ•āĻžāĻ°-āĻ•āĻŽā§āĻĒā§‹āĻœ āĻ†āĻĒ)āĻ¸ā§āĻŸā§āĻ¯āĻžāĻ• āĻšāĻžāĻ˛āĻžāĻ¨ā§‹āĻ° āĻœāĻ¨ā§āĻ¯
āĻ¸ā§‹āĻ°ā§āĻ¸ āĻ•ā§‹āĻĄ āĻŽāĻžāĻ‰āĻ¨ā§āĻŸ āĻ•āĻ°āĻž āĻ¸āĻš āĻĄā§‡āĻ­ā§‡āĻ˛āĻĒāĻŽā§‡āĻ¨ā§āĻŸ āĻŽā§‹āĻĄ /project/src.

āĻ†āĻŽāĻŋ āĻ‰āĻ¤ā§āĻĒāĻžāĻĻāĻ¨ āĻāĻ•āĻ‡ āĻĢāĻžāĻ‡āĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨! āĻāĻŦāĻ‚ āĻ†āĻŽāĻŋ āĻ āĻŋāĻ• āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡
āĻāĻ•āĻ‡ āĻĢāĻžāĻ‡āĻ˛ Docker-compose.yml āĻŽāĻžā§āĻšāĻžāĻ¯āĻŧāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯āĨ¤ āĻāĻ‡ āĻĒā§āĻ°āĻ¸āĻžāĻ°āĻŋāĻ¤ āĻ•āĻ°āĻ¤ā§‡
āĻ‰āĻ¤ā§āĻĒāĻžāĻĻāĻ¨, āĻ†āĻŽāĻžāĻ•ā§‡ āĻ•ā§‡āĻŦāĻ˛ āĻāĻ•āĻŸāĻŋ āĻĒā§‚āĻ°ā§āĻŦāĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŋāĻ¤ āĻŸā§āĻ¯āĻžāĻ— āĻ¸āĻš āĻšāĻŋāĻ¤ā§āĻ°āĻŸāĻŋ āĻ¤ā§ˆāĻ°āĻŋ āĻāĻŦāĻ‚ āĻĒāĻžāĻ āĻžāĻ¤ā§‡ āĻšāĻŦā§‡
āĻ¸āĻŋāĻ†āĻ‡ āĻĒāĻ°ā§āĻ¯āĻžāĻ¯āĻŧā§‡:

export MY_SERVICE_VERSION=1.2.3
docker-compose -f docker-compose.yml build
docker-compose -f docker-compose.yml push

āĻ‰āĻ¤ā§āĻĒāĻžāĻĻāĻ¨ā§‡, āĻāĻŸāĻŋ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻ–āĻŋāĻ¤ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻĻāĻŋāĻ¯āĻŧā§‡ āĻšāĻžāĻ˛āĻžāĻ¨ā§‹ āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡:

export MY_SERVICE_VERSION=1.2.3
docker stack deploy my-stack --compose-file docker-compose.yml --with-registry-auth

āĻāĻŦāĻ‚ āĻ†āĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻŽāĻžā§āĻšā§‡ āĻāĻ•āĻ‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ¨ āĻ¤āĻŦā§‡ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ•ā§‡āĻŦāĻ˛ āĻ¸āĻ‚āĻœā§āĻžāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡
āĻ¸ā§āĻŸā§‡āĻœāĻŋāĻ‚ āĻĒāĻ°āĻŋāĻŦā§‡āĻļā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧ āĻĒāĻ°āĻŋāĻŦā§‡āĻļ āĻ­ā§‡āĻ°āĻŋāĻ¯āĻŧā§‡āĻŦāĻ˛:

export MY_SERVICE_VERSION=1.2.3
export API_ENDPOINT=http://staging.my-api.com
docker stack deploy my-stack --compose-file docker-compose.yml --with-registry-auth

āĻĢāĻ˛āĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻ†āĻŽāĻ°āĻž āĻĻā§āĻŸāĻŋ āĻ­āĻŋāĻ¨ā§āĻ¨ āĻĄāĻ•āĻžāĻ°-āĻ•āĻŽā§āĻĒā§‹āĻœ āĻĢāĻžāĻ‡āĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡āĻ›āĻŋ, āĻ¯āĻž āĻ›āĻžāĻĄāĻŧāĻž
āĻĄā§āĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻŸ āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ°ā§‡āĻļāĻ¨ āĻ†āĻĒāĻ¨āĻžāĻ° āĻĒāĻ°āĻŋāĻŦā§‡āĻļā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡!

āĻ•ā§‹āĻ°ā§āĻ¸ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ†āĻ°āĻ“ āĻœāĻžāĻ¨ā§āĻ¨ "āĻ˛āĻŋāĻ¨āĻžāĻ•ā§āĻ¸ āĻĒā§āĻ°āĻļāĻžāĻ¸āĻ•"

āĻ‰āĻ¤ā§āĻ¸: www.habr.com

āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻœā§āĻĄāĻŧā§āĻ¨